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
Server Listing
Heista MCP

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 112 of 112 tools scored. Lowest: 3/5.

Server CoherenceB
Disambiguation4/5

Despite the high tool count, most tools have distinct purposes with thorough descriptions that specify when to use each. Some overlap exists among creative direction tools (call_creative_worlds vs chat_with_creative_worlds), but the descriptions clarify usage patterns.

Naming Consistency3/5

Naming conventions are inconsistent overall: some follow verb_noun (create_powersource_url, decode_ad), others use noun_verb or compound names (adformula_intelligence, fleet_analytics_overview). However, subgroups like dispatch_* and list_*_presets maintain internal consistency.

Tool Count2/5

112 tools is far beyond the typical 3-15 range for well-scoped servers. While the server covers a broad domain, the sheer number likely overwhelms agents and suggests insufficient consolidation of related operations.

Completeness4/5

The tool set covers core creative intelligence workflows: brand analysis, ad decoding, script generation, creative direction, and research. Minor gaps exist (e.g., no social media publishing tools), but the main use cases are well-supported.

Available Tools

112 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?

The description discloses the full pipeline: download, vision tagging (classifies type, detects product name, flags is_primary_product), storage, and database insertion. It also mentions cost and fallback behavior when tagging fails. Annotations are consistent and descriptive.

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

Conciseness5/5

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

The description is two sentences with no wasted words. It front-loads the core action and pipeline, then adds important behavioral details in the second sentence.

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 has no output schema, the description adequately explains the pipeline and fallback. It covers behavior relevant to decision-making, though it could mention the return value or success indication.

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

Parameters3/5

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

The input schema covers both parameters with 100% description coverage. The description adds minimal new meaning beyond the schema (e.g., 'Public HTTPS URL'), so it meets the baseline but does not exceed it.

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

Purpose5/5

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

The description explicitly states 'Upload an image to a brand by URL,' specifying the verb, resource, and method. It clearly distinguishes from sibling tools like retag_brand_asset by detailing the pipeline and fallback.

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

Usage Guidelines4/5

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

The description implies usage context (uploading by URL with automated tagging) and mentions fallback and retry via retag_brand_asset. While it lacks explicit 'when not to use' guidance, it provides clear context and alternatives.

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 indicate read-only, idempotent, non-destructive behavior. The description reinforces these with 'Free, read-only, idempotent' and adds behavioral specifics like returning clustered patterns, confidence scores, and visual directions.

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: main purpose first, then filters, output, usage guidance. Slightly verbose with examples, but each sentence adds value. Could be tightened without losing clarity.

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 (6 optional params, no output schema), the description covers all essential aspects: what it does, how to use filters, what output fields mean, when to use alternatives. No gaps.

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% with descriptions for each parameter. The description goes further by grouping filters, providing examples, and explaining how they affect results (e.g., vertical examples, hook types). Adds 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 tool's purpose: browsing proven ad formula blueprints with structural patterns. It distinguishes from sibling tools like decode_ad and generate_adscript by specifying when to use each.

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 details when to use (e.g., category-level pattern discovery) and when not to (e.g., specific ad decoding). Provides prioritization criteria for selecting among results and cross-references to sibling tools.

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

call_creative_agent_presetCall Creative AgentAInspect

Invoke a Creative Agent (character) preset. Every preset is a purpose-built character the workspace has authored or the Heista catalog has published — copy voice, art direction, strategy, creative direction, etc. ONE-SHOT: give the character a message, get its response back as text.

Discover callable presets via list_creative_agent_presets. Workspace-authored presets are only callable inside their owning org; official templates (visibility=public_template) are callable from any authenticated org.

INPUTS: agent_id (UUID from list_creative_agent_presets), message (the turn text), optional brand_id (server-loads multi-strategy brand summary for character context), optional working_context (light labels the character reads as IN SCOPE — pinned brand + strategies + documents + playbook), optional thread_id (continuity id), optional idempotency_key (5-minute retry safety).

Returns the character's response as plain text plus a structured envelope with usage, model, provider, thread_id. Metered — cost depends on character model + context size, typically 2-10 credits per turn. Charged after success on real token usage.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYesThe user turn — the message the caller wants the character to respond to. One-shot; not persisted as a conversation history unless the caller supplies thread_id continuity.
agent_idYesThe Creative Agent preset id to call. Discover ids via list_creative_agent_presets. Workspace-authored agents are only callable from within the owning org; official templates (visibility=public_template) are callable from any org.
brand_idNoOptional Heista brand id (a.k.a. brief id). When provided, the runtime server-loads the multi-strategy brand summary via `loadMultiBrandContext` and injects it into the agent's system prompt as BRAND INTELLIGENCE. RLS-scoped read — a brand outside the caller's workspace resolves to no summary (silent fall-through).
thread_idNoOptional continuity id round-tripped on the response. Callers manage their own thread state — the runtime does NOT persist history for library calls (chat surface uses its own session table).
idempotency_keyNoOptional unique key to make this call safely retryable. If the same key + org repeats within 5 minutes, the cached response returns without re-charging.
working_contextNoOptional Working Context labels — brand pin, pinned strategies, pinned documents, loaded playbook. Rendered into the agent's system prompt as an IN SCOPE bullet block so the agent knows what the workspace has pinned. IDs must reference workspace-owned rows. For deeper brand intelligence, pass `brand_id` (server-resolved).
Behavior4/5

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

Beyond annotation defaults, the description reveals cost behavior (2-10 credits), idempotency key retry safety, and that history is not persisted unless thread_id is provided. It 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?

The description is well-structured, starting with purpose, then discovery, inputs, and output/cost. It is moderately lengthy but each sentence adds value. Minor redundancy could be trimmed, but overall efficient.

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

Completeness4/5

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

Given the tool's complexity (6 parameters, nested objects, no output schema), the description covers essential aspects: one-shot operation, org restrictions, optional inputs, cost, and return envelope structure. Missing explicit details on response format, but acceptable 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?

Although the input schema already describes all parameters, the description adds high-level context for each (e.g., brand_id loads brand summary, working_context as labels, idempotency_key for retries). This extra guidance aids correct usage beyond the schema alone.

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

Purpose5/5

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

The description clearly states the tool invokes a Creative Agent preset, a purpose-built character. It specifies the one-shot nature (message in, text out) and distinguishes from siblings by referencing list_creative_agent_presets for discovery and noting org constraints.

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 use the tool (to call a creative character) and provides context on org-based accessibility (workspace vs public). However, it lacks explicit instructions on when not to use it or comparison to alternatives like dispatch tools.

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?

Goes beyond annotations: describes it as a one-shot engine mirroring the internal Creative Director specialist, details output shape switching via medium, notes metered credit usage (3-15) and post-success charging, and mentions structured array for programmatic use. 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?

Well-structured with clear sections and bullet-like formatting, but somewhat lengthy due to exhaustive detail. Front-loads purpose and key distinction, though could be slightly tightened without losing clarity.

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 6 parameters, nested object, output shapes per medium, usage guidance, billing, and integration points. Without output schema, the description fully compensates by detailing return format for each medium.

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?

100% schema coverage already; description adds extensive context: brief examples, count range rationale, full medium enum breakdown with output shape specs, brand_id integration with other tools, lens_hint nested structure, and idempotency_key safety guarantee.

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

Purpose5/5

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

The description explicitly states the tool is Heista's creative direction engine, providing one-shot generation of N finished creative outputs from a brief. It clearly distinguishes from the sibling chat_with_creative_worlds for refinement, and lists concrete 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 WHEN' examples (e.g., 'give me ideas/options/directions', 'write a TVC for...') and clear 'DO NOT USE' exclusions (refinement, critique, non-advertising tasks). Also references the alternative sibling tool for specific scenarios.

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?

Annotations (readOnlyHint: false, etc.) are generic; the description adds substantial behavioral context: it is a multi-turn, stateful conversation where the agent decides output each turn; session_id management is explained; it lists things it won't do (OKRs, general assistant); metered credits (2-10 per turn) are noted. 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 with clear sections (WHAT YOU CAN ASK, SESSION, USE WHEN, WON'T DO). It front-loads the key distinction from the sibling tool. Minor redundancy (e.g., some examples repeated) prevents a 5, but it remains efficient for the complexity.

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 exists, so the description must cover return behavior. It explains that a session_id is returned, but doesn't describe the full response structure (e.g., content format, credits used). However, it covers purpose, usage, parameters, and limitations well for a creative tool. Slight gap in return format detail.

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 rich context beyond the schema: examples of what 'message' contains on first vs subsequent turns; clarifies brand_id is only honored on first turn; explains session_id omission/passing. This significantly aids correct usage.

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

Purpose5/5

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

The description specifies a multi-turn conversation with Heista's creative direction engine, listing many concrete output types (territories, TVC scripts, billboards, etc.) and directly distinguishes from the sibling call_creative_worlds by noting outputs outside its medium enum. The verb 'chat' and resource 'creative worlds' are clear.

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

Usage Guidelines5/5

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

Explicit guidance: 'Use whenever the work needs more than one round, OR when you want an output shape not covered by call_creative_worlds' medium enum.' Also states 'Prefer call_creative_worlds when the user wants "three options, done" with no follow-up.' This clearly defines when to use vs alternatives.

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

check_balanceCheck BalanceA
Read-onlyIdempotent
Inspect

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

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

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

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

Annotations already indicate readOnly, idempotent, non-destructive. Description adds context about being free, returning specific fields, and providing a top-up link. 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 paragraphs: first describes output, second gives usage guidelines. Every sentence is valuable, no fluff, front-loaded with 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?

Despite no output schema, description lists all returned fields (balance, usage, pricing, top-up link). Covers usage, conditions, and output comprehensively.

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?

Tool has zero parameters; schema coverage is 100%. Baseline score of 4 is appropriate; description does not need to add parameter info.

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 checks the user's credit balance, usage, spend, and pricing. It specifies the verb 'check' and the resource, and distinguishes itself as the only tool for dollar amounts.

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 (user asks about credits, balance, usage, etc.) and when not to use (do not use to add credits, do not call on every turn). Provides clear alternatives and constraints.

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?

Annotations provide readOnlyHint=false, openWorldHint=true, idempotentHint=false, destructiveHint=false, which are consistent with a creation tool. The description adds rich behavioral context: it returns a job_id for polling, costs credits, reads text only, and gives instructions for handling PDFs. 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 fairly long but well-structured with clear paragraphs. It front-loads the main purpose and lists input options concisely. The detailed instructions for documents_inline are necessary given the complexity, but could be slightly trimmed without losing value. Overall, every sentence 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?

Given the complexity (6 parameters, multiple input types, nested objects in documents_inline, no output schema), the description is remarkably complete. It covers all input types (file_ids, document_urls, documents_inline), explains the text-only pipeline, provides polling instructions, lists the output structure (identity, offer, etc.), and gives clear usage guidance. No gaps identified.

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% with descriptions for all 6 parameters. The description significantly adds value beyond the schema, especially for 'documents_inline': it explains the text-only pipeline, how to extract text from PDFs/DOCX, base64 encoding limitations, and why this improves results. For 'brand_id', it explains auto-resolution behavior. Other parameters like 'idempotency_key' and 'context_url' are also well-explained.

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'. It specifies the verb (build/create), the resource (powersource), and the input type (documents). It distinguishes from siblings by explicitly stating when to use create_powersource_url and create_powersource_full, and provides examples of user utterances that trigger this tool.

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 scenarios: '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'. It also clearly states when NOT to use it ('Do NOT use for URL-only scans') and points to the correct sibling tools. Additionally, it mentions the cost (100 credits) and the polling mechanism.

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 already indicate non-read-only and open-world. Description adds credit cost, polling requirement (return job_id, use get_powersource), and internal process detail about cross-checking. 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?

Concise (~200 words), front-loaded with purpose, then parameters, then usage guidance, then cost. No extraneous sentences; 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 no output schema, description covers return type (job_id), polling method, credit cost, and how it differs from siblings. Completely addresses what an agent needs to use the tool 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?

Schema coverage is 100%, but description adds context: explains file_ids, document_urls, and documents_inline with practical tips (pipeline reads text only, base64 encoding, max 5MB). Enhances understanding 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 builds a high-fidelity creative intelligence profile by combining URL and documents. It uses specific verbs and resources, and distinguishes from siblings like create_powersource_url and create_powersource_docs.

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 URL and documents, deepest profile) and when not to use (URL-only or docs-only, with sibling tool names and credit costs). Provides clear selection criteria.

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?

Discloses async polling behavior (poll every 3-5s, 60-90s total), suggests get_powersource, details the 14-section output payload, and states cost/credit usage. Annotations already mark readOnlyHint=false and destructiveHint=false; description adds significant 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?

Front-loaded main goal, then parameters, then usage guidelines. Slightly long but justified by complexity; uses bullet-like list for output sections. Could be tightened slightly but 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?

Provides all necessary context: async return pattern, output structure (14 sections), polling guidance, cost, caching, sibling differentiation, and exclusion criteria. No gaps given no output schema.

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

Parameters4/5

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

Schema covers 100% of parameters; description adds value beyond schema by explaining url auto-resolution, brand_id usage context, idempotency_key retry safety, and caching nuance for force_refresh. Webhook_url is minimally explained but acceptable.

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?

Describes specific action: 'Build a complete creative intelligence profile of a brand from a single website URL.' Clearly distinguishes from siblings create_powersource_docs and create_powersource_full by stating what each is 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 lists typical user prompts that trigger this tool, provides when-not-to-use instructions with alternative tool names, and mentions cost and caching behavior. No ambiguity.

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

creative_get_authoring_contractCreative Library — Get Authoring ContractA
Read-onlyIdempotent
Inspect

Read the canonical shelves, taxonomy, relationship Lego, safe content rules, and positional slots for every publishable Creative Library format. Call this before authoring.

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 and idempotentHint=true, so the description does not need to restate safety. It adds value by specifying exactly what data is read (shelves, taxonomy, etc.) and the prerequisite nature, which is 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 sentences that are concise and front-loaded. The first sentence lists the specific data read, and the second provides a clear usage directive. 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?

For a tool with no parameters and no output schema, the description fully covers what the tool does and when to use it. The context of sibling tools (many creative functions) further supports that this is a prerequisite read operation.

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?

The input schema has zero parameters with 100% schema coverage. The description correctly adds no parameter details because none exist. This is a baseline 4 for zero parameters, but the description's clarity about what the tool returns (though not parameters) earns a 5.

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 canonical shelves, taxonomy, relationship Lego, safe content rules, and positional slots for all publishable Creative Library formats. It also specifies a usage directive ('Call this before authoring'), which distinguishes it from sibling tools like creative_get_draft or creative_save_draft.

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 calling this before authoring, providing clear context for when to use it. However, it does not explicitly mention when not to use it or list alternative tools, which would improve guidance.

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

creative_get_draftCreative Library — Get DraftA
Read-onlyIdempotent
Inspect

Read one Creative Library draft so it can be reviewed before explicit publication.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesThe article slug.
shelfYesOne canonical Creative Library shelf.
Behavior3/5

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

Annotations already provide readOnlyHint=true and idempotentHint=true. The description adds 'Read one Creative Library draft', which is consistent but does not disclose additional behavioral traits such as error handling or authorization needs. 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, front-loaded sentence with no unnecessary words. It conveys the essential purpose efficiently.

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 read operation with annotations covering safety and idempotency, the description is sufficiently complete. No output schema exists, but the tool's return value is straightforward (the draft). The note about review before publication adds useful 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 coverage is 100% with descriptions for both parameters (slug and shelf). The description does not add extra meaning beyond what the schema provides, so 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 'Read one Creative Library draft' with a specific verb (Read) and resource (Creative Library draft). It distinguishes from siblings like creative_publish_article and creative_save_draft by noting the draft is for review before publication.

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

Usage Guidelines3/5

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

While the description implies usage for reviewing drafts before publication, it does not explicitly state when to use or not use, nor does it mention alternatives or exclusions. The usage context is only implied.

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

creative_list_articlesCreative Library — List ArticlesA
Read-onlyIdempotent
Inspect

List Creative Library drafts and publication state. Returns editorial metadata only, not customer data.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size, from 1 to 100.
offsetNoZero-based page offset.
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 value by clarifying that the tool returns editorial metadata only, not customer data, providing additional 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 extremely concise, consisting of two sentences that are front-loaded with the purpose. Every sentence adds value with 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?

For a simple list tool with full parameter documentation in the schema and clear annotations, the description adequately covers the necessary context including the type of data returned, making it 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 covers both parameters (limit and offset) completely with descriptions. The tool description adds no additional meaning beyond what the schema provides.

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

Purpose5/5

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

The description clearly states the action (List), resource (Creative Library articles), and scope (drafts and publication state). It specifies that it returns editorial metadata, distinguishing it from other list tools in the sibling set.

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

Usage Guidelines4/5

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

The description provides clear context about what the tool does and what data it returns (editorial metadata, not customer data). However, it does not explicitly state when to use this tool versus alternatives like creative_get_draft or creative_publish_article.

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

creative_publish_articleCreative Library — Publish ArticleA
DestructiveIdempotent
Inspect

Publish only the exact reviewed draft revision. If the draft changed after review, publication fails and the new revision must be reviewed.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesThe reviewed draft slug.
shelfYesThe reviewed draft shelf.
expected_revisionYesThe exact revision returned by creative_get_draft after human review.
Behavior4/5

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

The description adds behavioral context beyond annotations: it explains that publication fails if the draft changed, requiring re-review. Annotations already mark it as destructive and idempotent, but the description clarifies the failure condition. 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 short, direct sentences with no wasted words. The key point is front-loaded: 'Publish only the exact reviewed draft revision.' All content is essential.

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 mutation tool with annotations providing safety info, the description is fairly complete. It explains the failure condition but does not mention the return value (e.g., success indicator). However, given low complexity, a small gap is acceptable.

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 does not add new information about parameters beyond what the schema descriptions already provide. The description aligns with the expected_revision parameter but adds no further meaning.

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

Purpose5/5

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

The description clearly states 'Publish only the exact reviewed draft revision.' This specifies the action (publish) and the resource (draft revision). It distinguishes from sibling tools like creative_save_draft, which saves but doesn't publish.

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 includes a condition: 'If the draft changed after review, publication fails and the new revision must be reviewed.' This makes it clear when to use the tool (after review) and what happens if conditions aren't met. It does not explicitly name alternatives, but the condition provides sufficient guidance.

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

creative_save_draftCreative Library — Save DraftB
Idempotent
Inspect

Validate and save a complete Creative Library draft using the canonical taxonomy and format-specific content slots. An identical retry is a no-op. It cannot replace published content or publish a page.

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYes
frontmatterYes
Behavior3/5

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

Annotations already declare idempotentHint=true, readOnlyHint=false, destructiveHint=false. The description adds the idempotency detail ('identical retry is a no-op') and a limitation ('cannot replace published content or publish a page'), which are helpful but not extensive. 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 three sentences long, each serving a distinct purpose: stating the action, noting idempotency, and clarifying limitations. It is front-loaded and efficient, with no fluff.

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

Completeness1/5

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

Given the extreme complexity of the input schema (multiple oneOf with many nested objects), the description provides virtually no guidance on how to structure the draft. It fails to explain the different format options, required fields, or constraints. The agent would be left to infer everything from the raw schema, which is unrealistic.

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

Parameters1/5

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

Schema description coverage is 0%, so the description must compensate for the complex frontmatter and content parameters. The description only vaguely mentions 'canonical taxonomy and format-specific content slots', without explaining the structure, required fields, or allowed formats. This is severely inadequate for an agent to understand how to construct valid parameters.

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 validates and saves a complete Creative Library draft using canonical taxonomy and format-specific content slots. The verb 'save' and resource 'draft' are unambiguous, and the tool name matches. It is implicitly distinct from siblings like creative_get_draft or creative_publish_article, though no explicit differentiation is given.

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

Usage Guidelines3/5

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

The description provides some usage boundaries: it notes that an identical retry is a no-op (idempotency) and that it cannot replace published content or publish a page. However, it does not explicitly state when to use this tool versus alternatives like creative_publish_article or creative_get_draft.

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

creative_unpublish_articleCreative Library — Unpublish ArticleA
DestructiveIdempotent
Inspect

Take a live Creative Library article down. It stops being public and leaves the sitemap immediately. The draft is preserved and can be re-published after review. Use this to reverse a publication.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesThe live article slug.
shelfYesThe live article shelf.
Behavior4/5

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

Annotations already mark destructiveHint=true and readOnlyHint=false. The description adds that it stops being public, leaves sitemap, preserves draft, and allows republishing. This goes beyond annotations without contradiction.

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

Conciseness5/5

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

Three succinct sentences that cover operation, effect, and consequence. No fluff or 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?

For a simple unpublish action with two parameters and no output schema, the description covers key points: public status, sitemap, draft preservation. It could mention response or prerequisites, but it's 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% with descriptions for slug and shelf. The tool description does not add extra meaning beyond what the schema already provides. Baseline score 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 takes down a live Creative Library article, making it non-public and removing from sitemap. It distinguishes from siblings like creative_publish_article by specifying the reverse operation.

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 says 'Use this to reverse a publication,' indicating when to use. It also notes the draft is preserved and can be republished, providing context. However, it doesn't explicitly mention alternatives or 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.

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 credit costs, polling mechanism (15s intervals, 45-60s completion), and async job pattern. Annotations do not contradict, and description adds 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.

Conciseness4/5

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

Well-structured with core purpose first, then output format, usage, sources, cost, and exclusions. Minor redundancy but overall efficient.

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, description explains return format (job_id, poll for results) and content of decoded result (breakdown, classification). Covers all key aspects for correct usage.

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 fully. Description adds value by explaining idempotency_key behavior (safe retry without re-charge) and listing supported URL types.

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

Purpose5/5

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

Clearly states it decodes a video ad URL into a structural formula, distinguishing from siblings like decoder_intelligence and adformula_intelligence. Explicitly mentions supported platforms and exclusions (image ads).

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 detailed when-to-use scenarios (user pastes URL, asks for decode) and when-not-to (browsing corpus, image ads) with specific alternative tools mentioned.

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 declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds context: free, no credits consumed, returns beat timeline and classification, and that the response is the spine; for full bundle call get_decode. 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?

The description is well-structured: first sentence introduces the tool, then lists filters and result contents, then usage guidance, then explicit exclusions. Every sentence adds value, and it is concise for the amount of information.

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 explains response contents (beat timeline, classification, psychology, runtime signals, decode id) and the relationship with get_decode. Seven parameters are all described, and sibling differentiation is provided for key alternatives.

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: each filter's purpose, examples (e.g., 'case-insensitive partial match' for brand, '1-10, default 5' for limit), and relationship with generate_adscript. This 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 it browses individual decoded ads from Heista's corpus with optional filters. It uses specific verbs like 'browse' and 'decoded ads', and distinguishes from siblings like decode_ad (new ad) and adformula_intelligence (category patterns).

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 lists when to use (user wants specific ad as template, asks for winning ads) and when not to use (do NOT for new ad decode, category patterns, writing script). It names alternatives: decode_ad, adformula_intelligence, 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.
Behavior5/5

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

Description explains removal of database row and storage object conditionally, adding context beyond annotations (destructiveHint=true) and specifying destructive behavior.

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 with clear structure: action, effect, guidance. 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?

Single parameter, no output schema, but description provides complete context: what it does, side effects, prerequisite, safety warning. No gaps.

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

Parameters4/5

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

Schema description covers asset_id fully (100%), but description adds value by telling how to obtain it (from list_brand_assets), aiding correct invocation.

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 verb 'delete' and resource 'brand asset', distinguishes from siblings like 'delete_saved_asset' by specifying deletion of brand_assets row and possibly 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?

Explicitly instructs to confirm with user before calling and to use list_brand_assets first to find asset_id, providing clear when-to-use and warnings.

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?

Adds significant behavioral detail beyond annotations: destruction warning, auth model nuances, and cleanup of storage objects for private saves. Annotations already set destructiveHint=true, but description enriches with actionable 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?

Description is three sentences, each adding distinct value. Front-loaded with the core action, followed by usage warnings and auth details. No redundant or extraneous information.

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 essential aspects: purpose, risks, auth rules, and side effects. Despite having no output schema, the tool's simplicity means this is fully adequate for safe and correct invocation.

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

Parameters3/5

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

Schema coverage is 100% with a well-described asset_id parameter. Description does not add any new semantic information about the parameter 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?

The description clearly states 'Delete one saved asset by id.' It uses specific verb (delete) and resource (saved asset), and distinguishes from siblings like favorite_saved_asset or list_saved_assets by emphasizing destructive action.

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 warns about destructiveness and to confirm with user. Clarifies auth model differences (OAuth vs API-key) and constraints on deletion. Does not name alternative tools explicitly but provides clear when-to-use context.

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

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

The description discloses that the tool performs multi-source FACT/INFERENCE extraction with citation discipline, returns labeled findings, and is vertical/geography agnostic. Annotations (readOnlyHint=false, openWorldHint=true, idempotentHint=false) are consistent and the description adds valuable behavioral context 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?

The description is concise (~100 words), front-loaded with purpose, and efficiently covers use cases, exclusions, and return structure without unnecessary 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?

Given the tool has 5 parameters and many siblings, the description provides a clear return structure (BRIEF + NOT IN SCOPE + findings + citations + Sources) and lists exclusions. It lacks mention of the async variant (dispatch_desk_researcher_async) but is otherwise 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 descriptions for all 5 parameters. The description does not add extra meaning to individual parameters beyond the schema, but the schema itself is sufficient. 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?

The description states the tool dispatches to a desk researcher for source-grounded synthesis, with specific use cases like 'what is known about X' and 'fact-check Z'. It distinguishes itself from siblings by listing four excluded tool types (e.g., dispatch_trend_researcher for trajectory), leaving no ambiguity about its function.

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 clear alternatives for each excluded use case. This gives the agent precise context for when to invoke this tool vs. its siblings.

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 that the tool returns a job_id immediately, runs durably on Vercel Workflow without a 300s timeout, and is idempotent. There is no contradiction with annotations (readOnlyHint=false, openWorldHint=true, 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.

Conciseness4/5

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

The description is well-structured and front-loaded with the purpose, then usage guidance, then async specifics and idempotency. It is slightly long but every sentence earns its place. Minor loss for density but still efficient.

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 of an async dispatch tool with many siblings and parameters, the description is complete. It explains the async pattern, polling instructions, idempotency, and outlines the return structure (BRIEF restatement, NOT IN SCOPE, findings with labels, citations, Sources). Output schema is not provided, so the description compensates effectively.

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

Parameters3/5

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

The input schema has 100% coverage with descriptions for all 5 parameters. The description adds some context about how parameters relate to the overall goal but does not significantly enhance the meaning beyond the schema. The baseline of 3 is appropriate as the schema already does the heavy lifting.

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 dispatching to the DESK RESEARCHER for source-grounded synthesis on a topic landscape, with specific use cases. It distinguishes from siblings by listing what it is NOT for, such as trajectory questions or entity teardowns, and clearly identifies it as the async version.

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 and when-not-to-use guidance, including alternatives for other dispatch tools. It explains the async behavior (use when >90s), how to poll results via get_dispatch_result, and mentions idempotency to avoid duplicate runs. This gives clear context for selecting and invoking the tool correctly.

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

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

Describes the full workflow: decomposition, parallel dispatch, polling, quality judgment, and synthesis. Includes wall time (2-5 min), cost ($0.20-1.50), and return fields. No contradictions with annotations; adds significant context beyond readOnlyHint and openWorldHint.

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 well-structured paragraph that front-loads the main action, then flows logically through workflow, usage, exclusions, cost, and returns. Every sentence adds necessary information; 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?

Given no output schema, the description provides the return format. With 3 parameters all described, annotations present, and complexity high (orchestrating 6 specialists), the description covers workflow, timing, cost, and constraints completely.

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?

With 100% schema coverage, the description still adds value: brief parameter gets guidance on self-contained structure and concreteness; priority explains production vs. deep models and cost implications; max_wait_seconds explains default and when to adjust. These exceed 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 it runs a full research workflow via the Head of Research agent, decomposing briefs into specialist sub-questions and orchestrating parallel dispatch. It distinguishes itself from individual specialist dispatchers (e.g., dispatch_desk_researcher) by being the orchestrator, and lists concrete 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?

Explicitly states when to use (source-grounded research requests) and when not (non-research requests like writing or casual chat). Also provides wall time, cost range, and return structure, helping agents decide appropriateness.

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

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

Annotations indicate readOnlyHint=false (may mutate), openWorldHint=true, idempotentHint=false. The description does not contradict these but adds minimal behavioral detail beyond stating it's a 'dispatch' tool that spawns a specialist. No contradiction detected.

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 front-loaded purpose, use cases, exclusions, and return details. It is fairly concise but could be slightly trimmed without losing clarity.

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 well-documented parameters and no output schema, the description adequately explains the tool's purpose, return structure, and differentiation from numerous siblings. Some behavioral details could be added, but overall complete.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description adds high-level context but does not enhance understanding of individual parameters beyond their 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 performs an entity-deep teardown of a named brand or vendor, with specific examples of use cases. It explicitly distinguishes from siblings by noting what it is NOT for (e.g., dispatch_desk_researcher for topic landscapes, dispatch_trend_researcher for trajectory questions).

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 (e.g., 'what is brand X / how does company Y work') and when-not-to-use scenarios, naming alternative tools. This gives clear guidance for tool selection.

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

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

Discloses async nature, immediate job_id return, durable execution on Vercel Workflow, polling instructions with wait_ms_hint, idempotency, and expected output (8-axis extraction + MOAT + GAP + Sources). Adds value beyond annotations which only indicated openWorldHint and idempotentHint.

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?

Front-loaded with purpose, then usage guidelines, output, and async behavior. Every sentence adds value; no filler. Efficiently structured for quick comprehension.

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 input schema (5 params, 4 required, all described), async workflow, idempotency, and output. No output schema needed since description explains returns. Complete for a complex research 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% with detailed descriptions for each parameter. The description does not add new parameter-level meaning beyond referencing objective and boundaries in context. Baseline 3 is appropriate since schema already fully explains parameters.

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

Purpose5/5

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

Clearly states it performs entity-deep teardown of a named brand or vendor with specific examples. Distinguishes from sibling tools by explicitly noting it is NOT for topic landscapes (use dispatch_desk_researcher) or category trajectory (use 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?

Provides explicit when-to-use criteria (brand, company, competitor, vendor teardown) and when-not-to-use conditions (topic landscapes, category trajectory). Names alternative sibling tools for excluded cases.

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

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

Description adds value beyond annotations by detailing the output structure (Corpus, Sampling, etc.) and noting that each theme includes evidence count, quotes, and outlier checks. It does not fully explain side effects (e.g., whether results are stored or if there are costs), but annotations already indicate mutability and external data access.

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-organized with clear sections for use cases, NOT for, and returns. Every sentence contributes useful information 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?

Given the absence of an output schema, the description thoroughly explains the return structure and methodological components. It also addresses the tool's niche and limitations relative to siblings, making it highly informative for correct invocation.

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

Parameters3/5

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

Input schema covers all 5 parameters with descriptions (100% coverage). The description does not add additional meaning beyond the schema; baseline 3 is appropriate as it does not detract but does not enhance.

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 performs thematic synthesis from unstructured text, gives specific use-case examples, and distinguishes from sibling tools like dispatch_quantitative_researcher and dispatch_social_listening_researcher by listing 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?

Explicitly states when to use ('what are the 2-3 recurring themes...') and when NOT to use, referencing alternative tools for quantitative effect sizes and multi-platform discourse mapping. This provides clear decision support 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 already indicate idempotentHint=true, and the description reinforces this with 'Idempotent: same brief + same org reuses the same job_id'. It also adds useful behavioral details like the async workflow (returns { job_id } immediately, no 300s timeout, durable Vercel Workflow) and describes the specialist's output contents. 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?

The description is moderately long but well-structured into clear sections: purpose, use cases, output, alternatives, async specifics. It front-loads the core purpose and is efficient without excessive 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?

Given the tool's complexity (async, polling, idempotent, many sibling tools), the description covers all necessary aspects: why to use, when to use async, how to poll, output contents, and exclusions. No output schema exists, but the description details the return format sufficiently.

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 clear descriptions for each parameter. The description does not add significant meaning beyond the schema, but the overall context of what the tool does helps infer parameter usage. No explicit parameter examples or cross-references are provided.

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 qualitative researcher for thematic synthesis from unstructured text, with specific example questions. It distinguishes from sibling tools like dispatch_quantitative_researcher and dispatch_social_listening_researcher, making the purpose unmistakable.

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

Usage Guidelines5/5

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

The description explicitly states when to use ('Use for:') and when not to use ('NOT for:') with concrete alternatives. It also specifies when to prefer the async version (over 90s expected duration) and provides polling instructions via get_dispatch_result.

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

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

Discloses that negative findings are deliverable ('Often answers with insufficient-evidence when underlying data is thin'). Annotations already indicate openWorldHint=true and readOnlyHint=false, and description adds context about methodology rigor, which is valuable beyond structured 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?

Four sentences, front-loaded with purpose and usage, no wasted words. Clearly structured with positive use cases, behavioral notes, return format, and explicit exclusions.

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 5 parameters (4 required) and no output schema, the description covers purpose, usage, behavioral traits, and return format (4-axis summary, table, gaps, sources). It provides all necessary context for an agent to decide when and how to invoke this 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 baseline is 3. Description does not add extra meaning for parameters beyond what schema provides, but that is acceptable given full 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 it dispatches to a quantitative researcher for numerical analysis with full methodology context. Provides specific example briefs like 'effect size of X' and explicitly distinguishes from sibling tools (dispatch_desk_researcher, 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 done rigorously') and when not to use ('NOT for: topic landscapes / community language patterns'), naming alternative sibling tools directly.

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?

Adds significant behavioral context beyond annotations: async return of job_id, durable execution on Vercel Workflow, idempotency, negative findings as deliverable, and return structure. 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 and concise, front-loaded with purpose, then usage boundaries, then async specifics. Bullet points for NOT-for and ASYNC version are effective. 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?

Covers async workflow, idempotency, polling mechanism, and return summary. With no output schema, the description provides enough context for an agent to understand what to expect and how to handle the response. Could be slightly more precise on the return format but sufficient.

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 good individual parameter descriptions. The tool description adds contextual meaning (e.g., reference to delegation contract for objective) but does not substantially enhance parameter-level details 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?

Clearly states it dispatches to a quantitative researcher for numerical analysis with methodology context. Distinguishes from sibling tools like dispatch_desk_researcher and dispatch_qualitative_researcher by specifying it is for numbers-driven briefs.

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 requiring rigorous numerical analysis) and when not to use (topic landscapes for dispatch_desk_researcher, community language patterns for dispatch_qualitative_researcher), providing clear 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_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?

Annotations (readOnlyHint=false, openWorldHint=true, idempotentHint=false) indicate a non-read, non-idempotent operation with potential external effects. The description adds detail: treats T3 community sources as primary data, samples ≥3 platforms, and returns a structured signal map with evidence and confidence flags. No contradiction with annotations. Could mention if it modifies any state beyond returning data, but overall strong.

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, well-structured with use cases, exclusions, and return format. It is concise but informative. Minor improvement could be bullet points, but it is still 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?

Despite no output schema, the description comprehensively lists what the tool returns (Signal map with components, per-platform evidence, classification, confidence flag, sources). It covers purpose, usage boundaries, and output format. Given the tool's complexity (multi-platform analysis), the description provides complete 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 description coverage is 100%; all five parameters have descriptions in the schema. The description does not repeat or enhance parameter details beyond the schema, which is fine. Baseline 3 is appropriate as the schema carries the parameter semantics, and the description focuses on overall 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+resource ('Dispatch to the SOCIAL LISTENING RESEARCHER - multi-platform community-signal interpretation') and gives concrete examples ('what are practitioners saying about X across platforms...'). It explicitly distinguishes from siblings by naming alternative tools (dispatch_qualitative_researcher, dispatch_quantitative_researcher) and their purposes.

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 'Use for:' and 'NOT for:' sections, listing when to use (cross-platform discourse) and when not (single-source themes, numerical sentiment). It directly names sibling tools for the excluded cases, offering clear guidance.

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?

Adds critical behavioral context beyond annotations: async job returns {job_id}, durable execution on Vercel Workflow, polling instructions with wait_ms_hint, and idempotency guarantee. No contradiction with annotations.

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

Conciseness4/5

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

Well-structured with clear sections (purpose, use cases, return format, comparisons, async behavior). Dense but every sentence adds value; slightly long but justified by complexity.

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 purpose, usage, return shape, async pattern, and idempotency. Lacks detailed return JSON structure, but the high-level description is sufficient given the complexity and annotations.

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

Parameters3/5

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

Schema already provides 100% parameter descriptions. The description does not add per-parameter details beyond the schema, so baseline 3 is appropriate; it does provide usage context for the parameters collectively.

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 tool as dispatching to a social listening researcher for multi-platform community-signal interpretation, with explicit use cases. It distinguishes from single-source thematic work and quantitative sentiment analysis by naming alternative tools.

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

Usage Guidelines5/5

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

Explicitly states when to use (e.g., cross-platform discourse, jargon emergence) and when not to use (single-source or numerical effect sizes), naming alternatives. Also specifies async usage for >90s tasks and idempotency 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 declare readOnlyHint=false, openWorldHint=true, idempotentHint=false, which align with the dispatch action. The description adds context about the specialist's approach and output structure, but does not detail potential side effects or authorization requirements.

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 front-loaded purpose and bullet points. Every sentence adds value, covering use cases, exclusions, and output. Efficient and informative 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?

For a complex dispatch tool with no output schema, the description fully specifies what is returned (four-axis assessment, drivers, counter-signals, etc.) and covers limitations via NOT-for clauses. All critical usage context is provided.

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 does not add parameter-specific guidance beyond the schema, though the overall purpose helps contextualize the parameters.

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 trend researcher for recency-dominant trajectory investigation, lists specific use cases (e.g., 'is X a real trend'), and distinguishes from siblings by explicitly naming alternatives (dispatch_desk_researcher, dispatch_market_analyst, 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 ('Use for: ...') and when-not-to-use ('NOT for: ...') with sibling tool names. Also describes the methodology ('Commits to falsifying conditions before searching'), offering clear guidance on invocation context.

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?

Annotations already indicate non-read-only, open world, and idempotent. Description adds: returns job_id, runs durably on Vercel Workflow (no 300s timeout), commits to falsifying conditions, and details output format. 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?

Description is relatively long but well-organized with clear sections (purpose, examples, output, not-for, async behavior). Every sentence adds value, though slight verbosity prevents a 5.

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, multiple siblings, detailed output), the description fully explains what the tool does, how to use it, when to choose async, and how to retrieve results. No missing information.

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 each parameter has a description. The tool description does not add significant new meaning beyond the schema, though it contextualizes the overall workflow. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's purpose: trend research with recency-dominant trajectory investigation. It provides example queries and distinguishes from sibling tools like dispatch_desk_researcher, dispatch_market_analyst, 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?

Explicitly lists when to use (e.g., 'is X a real trend') and when not to use (e.g., static landscape questions, entity teardowns). Also gives async-specific guidance: use when >90s, poll with get_dispatch_result, and notes idempotency.

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 indicate idempotent and not destructive. The description adds context about favorited_at being set/cleared in lockstep for sorting correctness, enhancing transparency 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 short sentences: purpose, usage, behavioral detail. No unnecessary words, easy to parse, and front-loaded with the core action.

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

Completeness4/5

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

The description covers all necessary aspects for this simple tool: what it does, how to use parameters, behavioral effect, and safety (not destructive). Could mention error handling if asset doesn't exist, but that's a minor gap for a minimal 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% and both parameters have descriptions. The description adds value by specifying how to use is_favorite (true/false) and explaining the side effect on favorited_at, going beyond schema alone.

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

Purpose5/5

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

The description clearly states the tool toggles the favorite flag on a saved asset, using specific verbs ('Toggle', 'Pass'). It distinguishes from siblings like save_asset (which saves) and list_saved_assets (which lists) by explicitly mentioning the action and parameter usage.

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

Usage Guidelines4/5

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

Explicitly tells when to use it (to favorite/unfavorite) and how to use the is_favorite parameter. However, it does not explicitly contrast with alternatives or state when not to use it, though the context is clear given siblings.

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?

Describes internal routing for PDFs vs HTML (OCR vs readability stripping) and SSRF protection. Adds context beyond annotations (readOnlyHint, openWorldHint) without contradiction.

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

Conciseness5/5

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

Concise, well-structured: purpose first, then routing, usage guidelines, non-usage, parameter details. No redundant sentences; 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 2-param tool with no output schema, description covers everything needed: behavior, routing, usage, security, parameters. Agents can select and 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 covers both parameters fully (100% coverage). Description adds default value for max_chars (8000) and reinforces SSRF constraints on url, providing marginal extra value.

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

Purpose5/5

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

Clearly states specific verb (drill into/fetch) and resource (URL after search surfaces it). Distinguishes from sibling search tools by explicitly stating 'NOT for discovering new URLs' and naming 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 lists use cases (verifying quotes, reading primary sources, drilling into product pages) and non-use cases (discovering URLs), directing to sibling tools like search, search_community, search_research.

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

fleet_analytics_overviewFleet — Analytics OverviewA
Read-onlyIdempotent
Inspect

Aggregate marketing analytics for the last 7/28/90 days: pageviews, visitors, sessions, AI-search-referred sessions, the view→engaged→CTA→signup→trial funnel, and top pages. Aggregates only — never person-level data. Returns an error result if product analytics is not configured. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoWindow in days: 7, 28, or 90. Default 7.
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 valuable behavioral context: 'Aggregates only — never person-level data' (privacy) and 'Returns an error result if product analytics is not configured' (configuration dependency). 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 extremely concise: two sentences that front-load the main purpose and cover scope, privacy, and error condition. Every sentence adds essential information with zero wasted words.

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

Completeness4/5

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

Given the tool's simplicity (single optional parameter, no output schema), the description covers the key aspects: what is returned (metrics and funnel), constraints (aggregates only, error if not configured), and available time windows. It does not detail the return format, but for an overview aggregation tool this is sufficient.

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% (all parameters described). The description adds minimal extra value beyond the schema: it confirms the possible days values (7, 28, 90) and the default of 7, plus lists the analytics included. 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 a specific verb ('Aggregate') and identifies the resource ('marketing analytics') and scope ('for the last 7/28/90 days'). It lists concrete metrics (pageviews, visitors, sessions, etc.) and explicitly distinguishes from sibling tools by stating 'Aggregates only — never person-level data.' This clearly differentiates from tools like fleet_analytics_top_pages or fleet_analytics_trend.

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

Usage Guidelines4/5

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

The description provides clear context: when to use (need aggregated marketing analytics for predefined windows) and what to expect ('Returns an error result if product analytics is not configured'). It does not explicitly name alternatives or state when not to use, but the purpose is well-defined enough to guide the agent.

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

fleet_analytics_top_pagesFleet — Analytics Top PagesA
Read-onlyIdempotent
Inspect

Top marketing pages by views for the last 7/28/90 days, optionally filtered to a path prefix (e.g. "/decode", "/intelligence", "/brands"). Includes engagement signals where captured. Aggregates only, hard cap 50 rows. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoWindow in days: 7, 28, or 90. Default 7.
limitNoMax rows (default 20, hard cap 50).
path_prefixNoOnly include paths starting with this prefix (e.g. "/decode", "/intelligence", "/brands").
Behavior3/5

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

Annotations already declare readOnly and idempotent; description adds hard cap and engagement signals details but lacks rate limits or auth requirements.

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, no redundancy, front-loaded with key purpose and constraints.

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 purpose, parameters, behavior, and constraints adequately. Lacks output format details but sufficient for a simple read-only 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%; description adds real-world examples for path_prefix (e.g., '/decode'), adding value beyond 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?

Clearly states the tool returns top marketing pages by views with optional path prefix filter, aggregates only, hard cap 50 rows. Distinguishes itself from other fleet analytics tools like overview and trend.

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

Usage Guidelines3/5

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

Implied usage for retrieving top pages by views, but no explicit guidance on when not to use or alternatives like fleet_analytics_overview or trend.

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

fleet_analytics_trendFleet — Analytics TrendA
Read-onlyIdempotent
Inspect

Daily pageview series for the last 7/28/90 days, split by traffic source category (ai_search / organic / social / direct / referral). Use to measure launch weeks and content momentum. Aggregates only. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoWindow in days: 7, 28, or 90. Default 28.
metricNoMetric for the daily series. v1 supports pageviews (split by source category: ai_search / organic / social / direct / referral).
Behavior4/5

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

Annotations declare readOnlyHint and idempotentHint. Description adds 'Aggregates only. Read-only.' reinforcing safety and clarifying data scope 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 front-load the functional output and purpose. No extraneous information.

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

Completeness4/5

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

Given no output schema, the description sufficiently explains the return type (daily pageview series) and scope. For a simple analytics tool, it covers the necessary information.

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%; both days and metric parameters are well-described. The tool description adds usage context but no parameter details beyond what the 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?

The description clearly states it returns a daily pageview series for specific time windows split by traffic source categories. It distinguishes itself from fleet_analytics_overview and fleet_analytics_top_pages by specifying the granularity and aggregation.

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 use case: 'measure launch weeks and content momentum'. Does not exclude alternatives, but the context makes it suitable for aggregated trend analysis.

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

fleet_crawler_hitsFleet — AI Crawler HitsA
Read-onlyIdempotent
Inspect

Server-logged crawler fetches: which AI engines (GPTBot, ClaudeBot, PerplexityBot, OAI-SearchBot, …) and search crawlers (Googlebot, Bingbot) fetched which heista.co pages, and when. This signal is invisible to page analytics — crawlers never run the tracking script. Group by bot, page, or date; filter by bot or path. Logging began 2026-07-23 (no earlier history exists). 180-day retention. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
botNoFilter to one bot (canonical names: gptbot, oai-searchbot, chatgpt-user, claudebot, claude-user, perplexitybot, perplexity-user, googlebot, bingbot, …).
daysNoWindow in days (default 28, max 180 — retention limit).
limitNoMax rows (default 25, hard cap 100).
group_byNoAggregation: by bot (default — which engines are crawling), by page (what they fetch), or by date (crawl cadence).
path_containsNoFilter: page path contains this string (e.g. "/decode", "/intelligence").
Behavior5/5

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

Consistent with annotations (readOnly, idempotent). Adds critical context: logging start date, 180-day retention, and that crawlers do not execute tracking scripts. 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, each serving a purpose: definition, unique value, and usage details. Front-loaded with core purpose, concise 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?

Covers all essential context: what data is returned, retention policy, start date, and read-only nature. No output schema needed for a straightforward list 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 all 5 parameters with descriptions. The description adds value by summarizing grouping and filtering capabilities, reinforcing parameter usage patterns.

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 retrieves server-logged crawler fetches for AI and search engines, naming specific bots and the domain. Distinguishes from siblings like fleet_analytics_overview by focusing on crawler-specific data.

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

Usage Guidelines4/5

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

Explains that crawler hits are invisible to page analytics, justifying its unique use case. Provides grouping and filtering options but does not explicitly mention when to avoid using it or list alternatives.

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

fleet_get_brand_reportFleet — Get Brand ReportA
Read-onlyIdempotent
Inspect

Read one live brand report in full by slug, including the creative intelligence payload used on the public brand page — proof points for outreach and positioning. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesBrand report slug from fleet_list_brand_reports.
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=false. The description adds that the report includes a creative intelligence payload, but does not disclose additional behavioral traits like rate limits or authorization requirements. With annotations covering safety, the description adds modest 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 a single concise sentence that front-loads the action and includes relevant context like the payload and read-only nature. Every phrase adds value; no filler.

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

Completeness5/5

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

Given the tool's simplicity (one parameter, no output schema), the description fully explains what the tool does and what it returns. It provides enough context for an agent to use it correctly without additional information.

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% for the single slug parameter, which is described as 'Brand report slug from fleet_list_brand_reports'. The description also mentions 'by slug' reinforcing the source. No additional parameter semantics are provided beyond what the schema already states, so baseline 3 applies.

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

Purpose5/5

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

The description clearly states the tool reads a live brand report in full by slug, including the creative intelligence payload. It distinguishes itself from sibling tools like fleet_list_brand_reports by specifying it retrieves a single report, not a list.

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

Usage Guidelines4/5

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

The description implies usage after obtaining a slug from fleet_list_brand_reports, and mentions the report contains 'proof points for outreach and positioning', hinting at when it is useful. No explicit alternatives or exclusions are given, but the context is clear enough.

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

fleet_get_decoded_adFleet — Get Decoded AdA
Read-onlyIdempotent
Inspect

Read one published decode in full by id or slug, including its public structural payload (beats, classification, patterns — the same data rendered on the public decode page). Use for proof points, content briefs, and pattern citations. Not for customer workspace decodes — only the published corpus. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
id_or_slugYesDecode id (uuid) or public slug — both appear in fleet_search_decoded_ads results.
Behavior4/5

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

Annotations already provide readOnlyHint and idempotentHint. Description adds context that it returns public structural payload (beats, classification, patterns) and that it's the same data as the public decode page.

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

Conciseness5/5

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

Two concise sentences. First sentence defines core function and output, second provides usage and restriction. 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?

With one parameter, no output schema, and high schema coverage, the description sufficiently clarifies return content and scope. Could optionally mention that the output matches the public decode page format.

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 clear description for id_or_slug. Description mentions 'by id or slug' but does not add new semantics 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?

Clearly states verb (read), resource (published decode), and output (structural payload). Distinguishes from sibling tools like fleet_search_decoded_ads and explicitly excludes customer workspace decodes.

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 when to use (proof points, content briefs, pattern citations) and when not to (customer workspace decodes). Read-only is stated, but no alternative tool named for excluded use case.

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

fleet_get_issueFleet — Get Linear IssueA
Read-onlyIdempotent
Inspect

Read one Heista Linear issue in full by identifier (e.g. "HEI-14") or UUID: title, state, priority, assignee, labels, full description, and recent comments (including the automated scope/fix notes agents leave). Locked to team HEI. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
identifierYesIssue identifier like "HEI-14" (preferred) or the issue UUID.
Behavior4/5

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

Annotations already indicate readOnlyHint and idempotentHint. Description adds that it returns recent comments including automated scope/fix notes, and that it's locked to team HEI, 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.

Conciseness5/5

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

Two efficient sentences covering purpose, scope, and output. No redundancy, front-loaded with key 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 single parameter and no output schema, the description adequately explains what the tool does and returns. Slightly could specify order or limit of comments, but sufficient for a simple read tool.

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

Parameters4/5

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

The schema has one parameter with description, coverage 100%. The description adds example format 'HEI-14' and mentions UUID as alternative, enhancing the schema's info.

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 reads one Heista Linear issue by identifier or UUID, detailing specific fields returned (title, state, priority, assignee, labels, full description, recent comments). This clearly distinguishes it from sibling tools like fleet_list_issues.

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 clarifies it's read-only and locked to team HEI, implying when to use (fetching a single issue) vs alternatives like fleet_list_issues for multiple issues. No explicit when-not, but clear enough.

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

fleet_gsc_inspect_urlFleet — Inspect URL Index StatusA
Read-onlyIdempotent
Inspect

Google URL Inspection for one heista.co URL: index verdict, coverage state ("Submitted and indexed" / "Crawled - currently not indexed" / "URL is unknown to Google"), last crawl time, robots state, and canonical resolution. THE tool for diagnosing why a page has no impressions. Quota ~2,000 inspections/day — batch thoughtfully. Read-only (requesting indexing is not possible via API).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesFull heista.co URL to inspect (e.g. "https://www.heista.co/decode").
Behavior4/5

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

Annotations already indicate readOnlyHint and idempotentHint. The description adds context beyond annotations: quota limit, that indexing is not possible via API, and the specific diagnostic scope. 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 concise with three sentences, each adding distinct value: first states purpose and outputs, second emphasizes diagnostic role, third notes quota and caution. No fluff, front-loaded.

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

Completeness4/5

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

Despite no output schema, the description lists specific return fields (index verdict, coverage state, etc.). It also mentions quota and read-only nature. For a single-parameter tool, it is fairly complete, though missing error or response format details.

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 restates the parameter (url) with similar wording. It does not add new meaning or constraints beyond what the schema already provides, so scores baseline 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 specifies the verb (inspect), resource (URL index status), and lists concrete outputs (index verdict, coverage state, last crawl time, robots state, canonical resolution). It also explicitly states it is 'THE tool for diagnosing why a page has no impressions,' distinguishing it from sibling tools like fleet_gsc_query or fleet_gsc_top_pages.

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

Usage Guidelines4/5

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

The description provides a quota (2,000 inspections/day) and a caution to 'batch thoughtfully.' It positions the tool as the primary diagnostic for impression issues, implying when to use it. It also clarifies read-only nature, but does not explicitly list alternatives or 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.

fleet_gsc_queryFleet — Search Console Live QueryA
Read-onlyIdempotent
Inspect

LIVE Google Search Analytics query — group by any dimensions (date, page, query, country, device, searchAppearance; up to 3) with page/query filters over up to 16 months of history. Richer than the snapshot tools: use this for ad-hoc analysis. NOTE: including the "query" dimension omits anonymized rare queries — use ["date"] or ["page"] for complete totals on low-traffic sites. Hard cap 100 rows. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNoISO date. Default: 3 days ago (GSC lags ~2-3 days).
row_limitNoMax rows (default 25, hard cap 100).
dimensionsYesGroup-by dimensions, up to 3 (e.g. ["query"], ["page","query"], ["date"]). NOTE: including "query" omits anonymized/rare queries — totals with ["date"] or ["page"] are more complete on low-traffic sites.
start_dateNoISO date (YYYY-MM-DD). Default: 28 days ago. GSC holds ~16 months of history.
page_containsNoFilter: page URL contains this string (e.g. "/decode").
query_containsNoFilter: search query contains this string.
Behavior5/5

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

Annotations already provide readOnlyHint and idempotentHint; the description adds behavioral details like 'LIVE', hard cap of 100 rows, and data lag (~2-3 days), enhancing transparency.

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

Conciseness5/5

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

Two clear sentences plus a NOTE, efficient with no wasted words; key information is front-loaded.

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?

The description covers purpose, usage, limitations, and important caveats (e.g., query dimension omission, data lag, history length), making it complete for the tool's complexity.

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

Parameters4/5

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

Schema covers 100% of parameters with descriptions; the description adds value through contextual notes (e.g., query dimension caveat) but does not significantly extend beyond schema.

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

Purpose5/5

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

The description clearly states it's a LIVE Google Search Analytics query that groups by up to 3 dimensions with filters over 16 months, distinguishing it from snapshot tools.

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

Usage Guidelines5/5

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

Explicitly advises when to use it ('ad-hoc analysis') versus snapshot tools, and includes a specific NOTE about when to avoid certain dimensions for complete totals.

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

fleet_gsc_sitemapsFleet — Sitemap Indexing ScoreboardA
Read-onlyIdempotent
Inspect

Sitemaps registered on the Search Console property with submitted vs indexed counts, last-download time, warnings and errors. The indexing-progress scoreboard — as of Jul 2026 the main sitemap had 2,432 submitted / 0 indexed. Track this as SEO fixes land. No parameters. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, making the behavior clear. The description confirms read-only and adds context about returned fields (counts, timestamps, warnings, errors) and a specific data example. This adds moderate 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 two sentences plus a brief example. Every sentence provides essential information: what the tool does, what data it returns, an illustrative example, and constraints. 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 zero-parameter read-only tool, the description fully covers what the agent needs: data content (submitted/indexed counts, last-download time, warnings/errors), a real-world example to calibrate expectations, and the read-only nature. No output schema needed.

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

Parameters4/5

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

The tool has zero parameters with 100% schema coverage. The description explicitly states 'No parameters,' which is clear and sufficient. Baseline for 0 params is 4, and the description meets 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 the tool retrieves sitemap indexing data from Search Console, including submitted vs indexed counts, timestamps, and errors. It distinguishes itself from sibling tools like fleet_gsc_summary by focusing specifically on sitemaps, and mentions a concrete example that clarifies the output.

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

Usage Guidelines4/5

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

The description implies usage for tracking SEO fixes ('Track this as SEO fixes land.') and explicitly notes it has no parameters and is read-only. It does not explicitly list when not to use or alternative tools, but the context and sibling names make this inferable.

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

fleet_gsc_summaryFleet — Search Performance SummaryA
Read-onlyIdempotent
Inspect

Google Search performance totals from first-party Search Console data (synced 6-hourly): clicks, impressions, CTR, impression-weighted average position, distinct queries and pages. Optional page-path filter. Data lags real traffic by ~2-3 days; max window 28 days. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoWindow in days (max 28 — GSC data lags ~2-3 days). Default 28.
page_prefixNoOnly include pages whose URL contains this path (e.g. "/decode").
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 critical behavioral context: data is synced 6-hourly, lags by 2-3 days, limited to a 28-day window, and is read-only. 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 a single, well-structured sentence that front-loads the purpose and includes all key details (metrics, data source, sync interval, lag, constraints). 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?

Despite lacking an output schema, the description lists all returned metrics (clicks, impressions, CTR, position, distinct queries/pages), data source, sync cadence, lag, and window constraint. For a tool with 2 optional params, this is fully complete.

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

Parameters3/5

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

Schema has 100% description coverage for both parameters (days, page_prefix). The description mentions the page-path filter and alludes to the window size but adds no 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 clearly states it provides total search performance metrics (clicks, impressions, CTR, etc.) from Google Search Console. It distinguishes itself from sibling GSC tools by focusing on aggregate totals and mentions optional page-path filter, making its purpose unambiguous.

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

Usage Guidelines4/5

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

The description implicitly guides usage by noting it's for totals and includes data lag (2-3 days) and max window (28 days). However, it does not explicitly compare to sibling tools like fleet_gsc_query or fleet_gsc_top_pages, so some guidance is present but not exhaustive.

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

fleet_gsc_top_pagesFleet — Top Search PagesA
Read-onlyIdempotent
Inspect

Top pages by Google search clicks or impressions from first-party Search Console data, optionally filtered to queries containing a term. Use to find which pSEO pages earn search demand. Hard cap 50 rows, max window 28 days. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoWindow in days (max 28). Default 28.
limitNoMax rows (default 25, hard cap 50).
order_byNoSort key. Default clicks.
query_containsNoOnly include rows whose search query contains this text.
Behavior5/5

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

Beyond annotations (readOnlyHint=true, idempotentHint=true), the description adds key constraints: 'Hard cap 50 rows, max window 28 days' and clarifies it uses 'first-party Search Console data'. These are critical for agent decision-making and are not present in 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, front-loaded with purpose and parameters, followed by usage and constraints. Every word adds value; 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?

The description clarifies the data source, optional filter, and constraints. Without an output schema, it could detail the returned fields more explicitly, but the purpose is clear enough for correct selection.

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

Parameters3/5

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

Schema coverage is 100%, and the description does not add substantial meaning beyond the schema. It mentions the optional query_contains filter but does not elaborate on format or behavior. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool returns 'Top pages by Google search clicks or impressions' with optional query filtering, and specifies its use case for finding 'pSEO pages' that earn search demand. This distinguishes it from sibling tools like fleet_gsc_top_queries.

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

Usage Guidelines4/5

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

The description provides a clear use case ('Use to find which pSEO pages earn search demand') and implies it is for page-level data. It does not explicitly state when not to use or name alternatives, but the context of sibling tools makes the differentiation evident.

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

fleet_gsc_top_queriesFleet — Top Search QueriesA
Read-onlyIdempotent
Inspect

Top Google search queries by clicks or impressions from first-party Search Console data, optionally filtered to pages containing a path (e.g. "/decode"). The core tool for briefing programmatic SEO. Hard cap 50 rows, max window 28 days. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoWindow in days (max 28). Default 28.
limitNoMax rows (default 25, hard cap 50).
order_byNoSort key. Default clicks.
page_prefixNoOnly include pages whose URL contains this path.
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint. Description adds hard caps, max window, and data source (first-party Search Console). No contradictions. Could mention sorting behavior, but overall sufficient.

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

Conciseness5/5

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

Three sentences, each serving a purpose: functionality, use case, constraints. Front-loaded with core action. No extraneous information.

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

Completeness4/5

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

Covers data source, filtering, ordering, limits, use case, and safety. Lacks explicit mention of output fields (e.g., clicks, impressions, position), but this is implied. Sufficient for a read-only listing tool with good annotations.

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 parameters with descriptions (100% coverage). Description reinforces constraints (hard caps) and adds usage context for page_prefix filter. Adds value beyond schema.

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

Purpose5/5

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

Clearly states it retrieves top Google search queries (verb+resource) from Search Console data. Distinguishes from siblings like fleet_gsc_top_pages by focusing on queries, and explicitly calls it 'the core tool for briefing programmatic SEO.'

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 context for use ('the core tool for briefing programmatic SEO') and constraints (50 rows, 28 days). Does not explicitly state when not to use or list alternatives, but the family of fleet_gsc tools imply differentiation.

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

fleet_intel_statsFleet — Canonical Corpus StatsA
Read-onlyIdempotent
Inspect

Canonical Ad Intelligence corpus counts — the single source of truth that kills number drift across marketing surfaces. Returns decoded ads published (THE number to quote publicly), total corpus size, live brand/category/weekly report counts, live categories and verticals, and the last publish timestamp. Use this BEFORE citing any corpus number in content, outreach, or briefs. Free, read-only, no parameters.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

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

Annotations already indicate read-only, idempotent behavior. The description adds that it is free and has no parameters, and clarifies the specific data it returns, which is useful 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?

Three sentences, front-loaded with the most important information, no wasted words. The description is tightly written 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 no parameters and no output schema, the description fully covers the tool's purpose and output. It lists all returned fields and usage context, leaving no gaps.

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

Parameters4/5

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

No parameters, so schema coverage is 100%. The description explicitly mentions 'no parameters,' confirming the empty schema. Baseline of 4 is appropriate as no further semantic detail is needed.

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

Purpose5/5

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

The description clearly states it returns canonical corpus counts for ad intelligence, listing specific data points (decoded ads published, total corpus size, etc.). It distinguishes itself as the single source of truth to prevent number drift, setting it apart 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 Guidelines5/5

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

Explicitly advises using this tool BEFORE citing any corpus number in content, outreach, or briefs, providing clear guidance on when to use it and implying it should be preferred over other tools for these counts.

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

fleet_list_brand_reportsFleet — List Brand ReportsA
Read-onlyIdempotent
Inspect

List live brand-level Ad Intelligence reports (the public /decode/brand pages). Optional brand-name filter, paginated, hard cap 50 rows. Returns identifiers + ad counts + public URLs; use fleet_get_brand_report for a full report. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax rows (default 10, hard cap 50).
queryNoFilter by brand name (partial match).
offsetNoPagination offset.
Behavior5/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true. Description states 'Read-only', aligning with annotations and adding no contradictions.

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

Conciseness5/5

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

Two concise sentences with key information front-loaded. 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?

Despite no output schema, description lists return items (identifiers, ad counts, public URLs) and mentions alternative tool. Sufficient for a listing tool with clear annotations.

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 detailed parameter descriptions. The description adds a holistic summary (optional filter, pagination, cap) but doesn't add new semantic detail 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 lists live brand-level Ad Intelligence reports and specifies the public /decode/brand pages. It distinguishes from sibling tool fleet_get_brand_report.

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 mentions optional brand-name filter, pagination, hard cap 50 rows, and directs to fleet_get_brand_report for full details. Provides when-to-use and alternative.

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

fleet_list_intelligence_articlesFleet — List Intelligence ArticlesA
Read-onlyIdempotent
Inspect

List live intelligence articles — the weekly and per-vertical category report system behind the public intelligence surfaces. Filter by kind (weekly/category) or vertical. Note: individual static deep-dive articles are not DB rows and are not listed here. Hard cap 50 rows. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoFilter by article kind.
limitNoMax rows (default 10, hard cap 50).
offsetNoPagination offset.
verticalNoFilter category articles by vertical.
Behavior4/5

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

Adds behavioral details beyond annotations: hard cap of 50 rows, read-only confirmation, and the nature of articles (live, not static). 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?

Two sentences plus a note, each sentence adds value. Front-loaded with main action, no wasted words.

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

Completeness4/5

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

Covers input constraints and exclusions well. Lacks output schema or description of return fields, which is a minor gap given no output schema.

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

Parameters4/5

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

Schema coverage is 100%, but description adds value by contextualizing parameters (e.g., 'Filter by kind (weekly/category) or vertical') and reinforcing hard cap.

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 live intelligence articles' with verb and resource. It distinguishes from static deep-dive articles and sibling tools like creative_list_articles and fleet_list_issues.

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 filtering options (kind, vertical) and explicitly excludes static articles. Lacks explicit when-not-to-use compared to 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.

fleet_list_issuesFleet — List Linear IssuesA
Read-onlyIdempotent
Inspect

List issues on the Heista Linear board (team HEI) — the read-only window into what the dev agents are working on, what's broken, and what's shipped. Filter by workflow state ("Backlog"/"Todo"/"In Progress"/"In Review"/"Done"), label ("Bug"/"Security"/"SEO"/"In-App Feedback"/…), or a title search. Returns identifier + state + priority + assignee + labels; use fleet_get_issue for the full description + comments. Hard cap 100 rows. Read-only — the fleet cannot create, edit, or close tickets.

ParametersJSON Schema
NameRequiredDescriptionDefault
labelNoFilter by label name (e.g. "Bug", "Security", "SEO", "In-App Feedback").
limitNoMax rows (default 30, hard cap 100).
queryNoText search over issue titles (case-insensitive).
stateNoFilter by workflow state name: "Backlog", "Todo", "In Progress", "In Review", or "Done".
Behavior4/5

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

Annotations already provide readOnlyHint and idempotentHint. Description adds hard cap (100 rows) and explicitly states fleet cannot create/edit/close tickets, reinforcing safety.

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 well-structured sentences, front-loaded with purpose, 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?

Covers board, team, filtering, limit, read-only constraint, and sibling differentiation. Complete for a list tool with no 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%, descriptions are already effective. Description adds example values for state and label filters but no new syntax or constraints beyond schema.

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

Purpose5/5

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

Clearly states listing issues on a specific Linear board (Heista, team HEI) with a read-only purpose. Differentiates from fleet_get_issue for full 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?

Explicitly directs to fleet_get_issue for full description/comments, and mentions hard cap and read-only nature. Does not explicitly state when not to use, but sibling differentiation is clear.

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

fleet_product_funnel_summaryFleet — Signup Funnel SummaryA
Read-onlyIdempotent
Inspect

Aggregate conversion/drop-off stats for a signup cohort (last N days, max 90): trial active vs expired-unconverted vs converted-to-paid, conversion rate, never-spent-a-credit rate, onboarding completion rate, and the most-installed Heists. Answers "where is the funnel leaking" in one call instead of aggregating individual summaries. Requires mcp:fleet:customer_pii. Every call is audit-logged. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoSignup cohort window in days (max 90). Default 30.
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 that it requires mcp:fleet:customer_pii permission, every call is audit-logged, and it's read-only. This adds behavioral context (auth, logging) beyond annotations, without contradiction. It does not explain return format but is sufficient.

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

Conciseness5/5

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

The description is two sentences: first sentence details what it does and lists key metrics, second sentence adds usage guidance, permissions, logging, and read-only flag. It's front-loaded with the most important information and every sentence earns its place. No wasted words.

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

Completeness4/5

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

Given the tool's complexity (aggregating funnel stats), the schema is minimal (1 param) and there is no output schema. The description explains what metrics are returned conceptually (conversion rate, etc.) and the purpose. It doesn't specify exact return format, but it's complete enough for an agent to understand the tool's value and 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?

Only one parameter 'days' with full schema description (max 90, min 1, default 30). The description mentions 'last N days, max 90' which reinforces the schema. No additional meaning beyond what the schema already provides. Baseline 3 is appropriate given 100% schema coverage.

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

Purpose5/5

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

The description clearly states it aggregates conversion/drop-off stats for a signup cohort, listing specific metrics like trial active, expired-unconverted, converted-to-paid, conversion rate, etc. It explicitly distinguishes itself from aggregating individual summaries, and the verb 'aggregate' with resource 'signup cohort stats' is specific. It also answers 'where is the funnel leaking' which is a clear purpose.

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

Usage Guidelines4/5

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

The description says when to use: to get funnel stats in one call instead of aggregating individual summaries. It mentions the parameter limit (max 90 days). It doesn't explicitly say when not to use or name alternatives, but the context of sibling tools implies it's for a specific purpose. It provides clear context but lacks explicit exclusions.

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

fleet_product_signups_recentFleet — Recent SignupsA
Read-onlyIdempotent
Inspect

List recent signups (last N days, hard cap 50 rows) with the same product-backend shape as fleet_product_user_summary — trial/credits/plan/onboarding/Heists per user. Use to see the newest cohort at a glance before drilling into individuals. Requires mcp:fleet:customer_pii. Every call is audit-logged. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoSignup window in days (max 90). Default 7.
limitNoMax rows (default 20, hard cap 50).
Behavior5/5

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

Beyond annotations, description adds auth requirement (mcp:fleet:customer_pii), audit-logging, read-only nature, and hard cap of 50 rows. All disclosures are 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?

Three sentences: first states action and constraints, second gives use case, third notes permissions and logging. Every sentence adds value, 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 read-only list tool with full schema and annotations, description covers usage, permissions, shape reference (to fleet_product_user_summary), and logging. No gaps for typical agent use.

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 parameters with clear descriptions (days, limit). Description reiterates constraints (last N days, hard cap 50) but adds no significant new 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?

Description clearly states 'List recent signups' with specific constraints (last N days, hard cap 50 rows) and shapes (same as fleet_product_user_summary). Distinctive from siblings by focusing on newest cohort.

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 to see the newest cohort at a glance before drilling into individuals' and lists required permission and audit logging. Lacks explicit exclusions or alternatives to other fleet tools.

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

fleet_product_user_summaryFleet — Customer Product SummaryA
Read-onlyIdempotent
Inspect

Look up ONE customer's product-backend state by email: trial status, credit balance, workspace plan, installed Heists, onboarding completion, plus PostHog attribution/engagement signals (source, 30d activity, page journey). This is the data PostHog structurally cannot see — whether they actually have active credits, are on a paid plan, or installed anything. Requires mcp:fleet:customer_pii (a separate, PII-adjacent scope — see Docs/systems/fleet-access.md). Every call is audit-logged. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesThe user email to look up.
Behavior4/5

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

Annotations already declare readOnly and idempotent hints. Description adds 'Every call is audit-logged' and explicitly states 'Read-only', reinforcing and extending behavioral context. 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?

Two sentences with dense, useful information. Could be slightly more structured (e.g., bullet points), but it's concise and front-loaded with purpose. 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?

No output schema but description lists returned data points comprehensively. Covers input, prerequisites, and behavior. Given the single parameter and rich output, this is complete.

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

Parameters3/5

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

Schema has 100% coverage with email description. The description does not add parameter-specific details beyond what the schema provides, so 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?

The description starts with a specific verb+resource ('Look up ONE customer's product-backend state') and lists concrete fields (trial status, credit balance, etc.), distinguishing it from sibling tools like fleet_product_funnel_summary. Clearly states what it does.

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 required scope ('mcp:fleet:customer_pii') and references documentation. Implicitly tells when to use: when needing customer product state. No explicit alternative exclusion, but specificity makes it clear.

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

fleet_search_decoded_adsFleet — Search Decoded AdsA
Read-onlyIdempotent
Inspect

Search the published Ad Intelligence corpus (the public decode gallery). Filter by free-text (name/tagline/brand), brand, category, vertical, or platform. Returns list rows with public URLs — never the full structural payload (use fleet_get_decoded_ad for that). Hard cap 50 rows per call; paginate with offset. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
brandNoFilter by brand name (partial match).
limitNoMax rows (default 10, hard cap 50).
queryNoFree-text match against ad name, tagline, and brand name.
offsetNoPagination offset.
categoryNoFilter by gallery category (exact match — values from fleet_intel_stats / prior searches).
platformNoFilter by platform (e.g. facebook, tiktok).
verticalNoFilter by vertical classification (exact match).
Behavior5/5

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

Discloses return format (list rows with public URLs), hard limit 50, pagination requirement, and read-only behavior. Annotations already indicate readOnlyHint, idempotentHint, no contradiction.

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

Conciseness5/5

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

Two sentences: first states purpose and filters, second details limitations and alternatives. Extremely concise and well-structured.

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 covers return format, pagination, limits, read-only, and alternative tool. With 7 optional parameters and no output schema, description is sufficient for correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so description adds minimal value beyond summarizing filter types. No new parameter details 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 the tool searches the published Ad Intelligence corpus and lists filters (free-text, brand, category, vertical, platform). It distinguishes from fleet_get_decoded_ad by noting it returns list rows with public URLs, not full payload.

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 not to use (for full structural payload, use fleet_get_decoded_ad), hard cap 50 rows, paginate with offset, and read-only nature.

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

fleet_seo_recoveryFleet — SEO Indexing-Recovery ScorecardA
Read-onlyIdempotent
Inspect

One-row verification scorecard for the indexing-recovery plan (internal-linking-spec-v2): site-wide + /decode-specific orphan counts (200 but zero internal inlinks) from the latest crawl, Googlebot vs other-bot crawl activity over a window (default 7 days, max 180), and Google Search Console impressions/clicks/avg-position over the trailing 28 days — each figure compared against the pre-fix baseline (1,521 orphans, 7 Googlebot pages/wk, 2 GSC impressions). Use this to confirm PR-A/B/C landed and is moving the needle, not just that the code shipped. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoCrawler-hit window in days (default 7, max 180 — retention limit). GSC + orphan figures are always current-snapshot / trailing-28d.
Behavior4/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, so the description's 'Read-only' is redundant but consistent. It adds value by specifying default window (7 days), max window (180), and that GSC/orphan figures are trailing-28d snapshots, which aids agent understanding of 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.

Conciseness4/5

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

The description is efficient but dense, front-loading the purpose and key metrics. Every sentence adds value, though it could be slightly shorter without losing meaning. The structure is logical: purpose, data types, usage guidance.

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 adequately outlines the return values (orphan counts, crawl activity, GSC metrics) and baseline comparisons. It covers behavior, window constraints, and intended use, making it sufficiently 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 coverage is 100% for the single parameter 'days', with a description. The tool description adds context beyond the schema by explaining the default (7), max (180), and that GSC/orphan figures are unaffected by this parameter. This helps the agent set appropriate values.

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's a 'one-row verification scorecard' for the 'indexing-recovery plan', enumerating specific metrics (orphan counts, crawl activity, GSC data). It distinguishes itself from generic analytics or GSC tools by focusing on recovery verification with baseline comparisons.

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 this tool: 'Use this to confirm PR-A/B/C landed and is moving the needle, not just that the code shipped.' This gives clear usage context and implies it's the right tool for this verification, differentiating it from other monitoring tools.

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

fleet_site_audit_summaryFleet — Site Audit SummaryA
Read-onlyIdempotent
Inspect

One-row health scoreboard from the weekly full-site crawl: total pages, OK/redirect/error counts, ORPHAN pages (200 but zero internal inlinks — the primary indexing-recovery target), thin pages, missing meta/titles, total internal links, last crawl time. Start here before drilling into fleet_site_pages. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior5/5

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

The description adds value beyond annotations by explicitly listing the fields returned (total pages, OK/redirect/error counts, ORPHAN pages, etc.) and stating it is read-only. Annotations already declare readOnlyHint and idempotentHint, but the description enriches with specific output details.

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 concise sentence with a well-structured list. It is front-loaded with the core purpose and every element 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?

Despite no output schema, the description lists the output fields comprehensively. It also references the sibling tool fleet_site_pages for deeper analysis, making it complete for the tool's role.

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

Parameters4/5

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

The tool has no parameters, and schema coverage is effectively 100%. The description does not need to add parameter information, so baseline of 4 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 it provides a 'one-row health scoreboard' from a weekly crawl, listing specific metrics. It distinguishes from sibling 'fleet_site_pages' by advising to 'Start here before drilling into fleet_site_pages.'

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 gives clear context: 'Start here before drilling into fleet_site_pages.' It implies the alternative tool (fleet_site_pages) 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.

fleet_site_pagesFleet — Site Pages InventoryA
Read-onlyIdempotent
Inspect

Filterable inventory of every sitemap-listed page with SEO facts (title, meta description, canonical, h1, word count, JSON-LD) and internal inlink/outlink counts from the weekly crawl. Filters: path_contains, orphans_only (zero inlinks), max_word_count (thin content), status, missing_meta. Sorted fewest-inlinks first — the pages Google cannot discover float to the top. Hard cap 100 rows. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax rows (default 25, hard cap 100).
offsetNoPagination offset.
statusNoFilter by HTTP status (e.g. 200, 308, 404).
missing_metaNoOnly pages missing a meta description.
orphans_onlyNoOnly pages with ZERO internal inlinks — the pages Google has no path to discover.
path_containsNoFilter: path contains this string (e.g. "/decode/", "/intelligence").
max_word_countNoOnly pages at or below this visible word count (thin-content filter, e.g. 150).
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint; the description adds hard cap of 100 rows, sorting behavior, and read-only nature, which is 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?

Description is 4 lines, front-loaded with the core function, and every sentence provides essential detail 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 tool with 7 parameters and no output schema, the description adequately covers output format, sorting, and caps, meeting the information needs for selection and invocation.

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; the tool description re-explains key filters (orphans_only, max_word_count) in context, adding purpose (e.g., 'thin-content filter') 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 returns a filterable inventory of sitemap-listed pages with SEO facts and link counts, distinguishing it from siblings like fleet_site_links or fleet_site_audit_summary.

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

Usage Guidelines4/5

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

The description implies when to use via filters (orphans_only, max_word_count, status, missing_meta) and sorting (fewest-inlinks first), guiding the agent to find discovery issues, but does not explicitly name alternatives.

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

generate_adscriptGenerate Ad ScriptAInspect

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

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

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

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

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

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

Discloses metered pricing (2-5 credits), pre-flight reservation of 17 credits with refund, and behavior details like auto-rotation of tensions and selling points across variants, and script modes affecting copy generation. 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?

Well-structured with main action first, then parameters, usage context, and exclusions. Every sentence adds value, though longer than minimal. Could be slightly more concise but comprehensive 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 output format, behavior in different modes, pricing, prerequisites, and explicitly warns against using for source discovery or intel extraction. No output schema, but description compensates fully. Complete for a complex tool with 11 parameters.

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?

With 100% schema coverage, description adds significant meaning beyond schema: explains count auto-rotation, script_mode effects, voice_mode context, duration constraints in blueprint mode, source_id types, and powersource_id accepting job_id or brief_id. Provides implicit defaults.

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 generates direct-response video ad scripts by fusing a structural source with a brand's PowerSource, and specifies the output format (hook, body, CTA, visual direction). It distinguishes itself from sibling tools like decode_ad (decodes ads) and create_powersource_* (extracts intel) by focusing on script generation.

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

Usage Guidelines5/5

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

Provides explicit usage scenarios ('write me a script', 'I need a TikTok script') and when not to use it (discover sources or extract intel, redirecting to decoder_intelligence or adformula_intelligence). Also explains prerequisites and guides user to create missing inputs.

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.
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 it's 'Free' and includes 'full body payload', providing extra behavioral 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 concise sentences: first covers purpose and output, second gives usage guidance and cost. No wasted words, front-loaded.

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 single-parameter read tool with no output schema, the description fully explains what to expect and what prerequisite action to take, making it 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% for the single parameter 'id', which has a clear description. The tool description does not add new parameter details beyond what the schema provides.

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

Purpose5/5

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

The description clearly states the verb 'Get' and the resource 'ad formulas preset', and specifies what is included ('full body payload'). It distinguishes from sibling 'get_*' tools by naming the specific 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 is essential. Also notes it's 'Free, read-only', but no explicit when-not-to-use or alternatives.

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. The description adds 'Free, read-only' and specifies the exact data fields returned (name, domain, voice, story, visual identity, counts), providing valuable behavioral context beyond the annotations' safety signals.

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-to-three sentences, front-loaded with the core purpose and a concise list of returned fields. Every sentence adds value—no fluff, optimal length for quick comprehension.

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 adequately covers what is returned (canonical record with specific fields) and offers usage context. It lacks detail on optional counts or pagination, but given the tool's specificity, it is near 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 one parameter brand_id. The schema already includes a description ('Brand to inspect. Get from list_brands.'). The tool description does not add new parameter-level information, meeting the baseline for high coverage without further enrichment.

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 returns a brand's full canonical record, enumerating specific fields (name, domain, voice, story, visual identity, counts). This distinguishes it from sibling tools like list_brands (which lists brands) and other retrieval tools, providing a precise verb-resource combination.

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 when to use the tool: 'inspect what a brand carries before deciding which Heist context to run' or 'to read the brand voice directly when writing copy.' It implies a pre-execution inspection role but does not explicitly mention when not to use it or list alternative tools, though the context is clear.

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

get_cd_card_bookmark_presetGet Saved cardA
Read-onlyIdempotent
Inspect

Get one saved cards 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?

The description adds value beyond annotations by specifying that the tool returns the 'full body payload (framework, agent config, etc.)' and that it is 'Free, read-only.' The annotations already declare readOnlyHint and idempotentHint, so the description provides useful 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.

Conciseness5/5

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

The description is two sentences long with no redundancy. The first states the core action and result, the second provides a key workflow hint. Every word earns its place.

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

Completeness4/5

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

The description covers the tool's purpose, input requirement, output content, and cost. It lacks explicit mention of error handling (e.g., missing ID) but given the simple nature and good annotations, it is sufficiently complete.

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

Parameters3/5

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

Schema description coverage is 100% for the single parameter. The description reiterates the parameter's purpose ('by id') and workflow, but does not add significant new meaning beyond what the schema already provides. 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 a specific verb ('Get'), names the resource ('saved cards preset'), and clarifies scope ('by id, including its full body payload'). It distinguishes from the sibling list tool by explicitly instructing to 'Call the matching list tool first to discover ids.'

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

Usage Guidelines4/5

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

The description provides a clear prerequisite ('Call the matching list tool first to discover ids'), which guides usage. It does not explicitly state when not to use or name alternatives, but the context is clear enough.

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

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?

Annotations already indicate readOnlyHint and idempotentHint. Description adds value by stating 'Free, read-only' and clarifying it returns the full body payload, 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 sentences front-loaded with primary action. No wasted words; each sentence 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 simple retrieval tool with one parameter and no output schema, the description fully covers purpose, parameter, return content, and prerequisites.

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

Parameters3/5

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

Single parameter id has 100% schema coverage. Description restates the schema's instruction to discover ids via list tool, adding no new semantic meaning. 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 verb (Get), resource (creative agent preset), and includes what's returned (full body payload). Distinguishes from sibling list tool by instructing to call list first.

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 matching list tool first to discover ids, and notes it's free and read-only. For a simple get-by-id, this is sufficient guidance.

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

get_creative_agent_skill_presetGet Creative agent skillA
Read-onlyIdempotent
Inspect

Get one creative agent skills 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 context about the response including full body payload (framework, agent config) and reinforces that it is free and read-only, which is helpful 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: first describes purpose and payload, second provides usage guidance. No wasted words, front-loaded, 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?

For a simple get tool with one parameter and no output schema, the description mentions the return includes full body payload, which is helpful. However, without output schema, more detail on the response structure could improve completeness, but it 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?

The schema covers the single parameter 'id' with a description that already tells how to discover IDs. The tool description merely restates this, adding no new parameter semantics beyond what schema provides. Baseline score of 3 for 100% coverage.

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

Purpose5/5

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

The description clearly states the verb 'get' and the specific resource 'creative agent skills preset', and distinguishes from sibling tools by specifying the preset type (skill) and noting the full body payload.

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 instructs to call the matching list tool first to discover IDs, and notes the tool is free and read-only. It implies when to use but does not explicitly mention when not to use or provide alternative tool comparisons.

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 already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds value by confirming the tool is 'Free, read-only' and specifying the output includes 'full body payload (framework, agent config, etc.)', providing context beyond annotations. No contradictions.

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

Conciseness5/5

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

Two sentences: first states core function with scope, second provides usage guidance. No wasted words, perfectly front-loaded, and every sentence adds essential information.

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 one parameter, the description covers what is returned (full body payload), how to discover IDs (list tool), and safety (read-only, free). No output schema needed for completeness.

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

Parameters3/5

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

Schema description coverage is 100%: the single parameter 'id' has a detailed description. The tool description reiterates the same guidance ('Call the matching list tool first'), adding no 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 creative director playbooks preset by id, including its full body payload', specifying the verb (Get), resource (creative director playbook preset), and scope. It distinguishes from sibling list tools by directing to call the list tool first for IDs.

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 a clear prerequisite. It also notes the tool is 'read-only', implying safe usage, but does not specify when not to use or alternative tools.

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?

Annotations already indicate read-only, idempotent, non-destructive. Description adds polling behavior (15s interval), status values, free billing at submit time, and detailed payload contents, enriching 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?

Well-structured with clear sections. Every sentence adds value. Front-loaded with main purpose, then usage details, then exclusions. 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?

Despite no output schema, description thoroughly explains return value (status, payload fields) and preconditions. Covers all aspects needed for agent to correctly use the 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 has 100% description coverage for the single parameter job_id. Description merely repeats 'UUID returned by decode_ad', adding no new semantics. 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?

Clearly states the tool retrieves a decode bundle or polls status, specifying the resource (decode bundle) and action. Distinguishes from sibling tools like decoder_intelligence (browsing) and decode_ad (starting a new 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?

Explicitly tells when to use (immediately after decode_ad, every 15s, for re-fetching) and when not to use (use decoder_intelligence for browsing, call decode_ad for starting). Provides direct 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, idempotentHint. The description adds 'Free, read-only' and 'including its full body payload', which provides value beyond 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, no wasted words. First sentence states purpose and output, second gives usage guidance and safety. Extremely concise 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?

For a single-parameter, read-only tool with annotations, the description is adequate. It covers purpose, prerequisite, and safety. Cannot comment on return format due to no output schema, but overall complete enough.

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 the schema parameter description already explaining the id purpose and discovery. The description repeats this guidance but does not add new semantic meaning.

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

Purpose5/5

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

The description clearly states the verb (Get), resource (decoded ads preset), and what it includes (full body payload with framework, agent config, etc.). This distinguishes it from similar 'get_*_preset' sibling tools.

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

Usage 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. This provides clear context for when to use.

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

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 declare readOnlyHint and idempotentHint, but description adds detailed behavioral context: the polling loop, sleep timing, and retry/give-up logic. 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 comprehensive but slightly long; however, every sentence adds essential operational guidance. Well-structured, starting with purpose, then return schema, then usage patterns.

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

Completeness5/5

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

No output schema exists, so description fully documents the return object fields, status enum, and error handling. Covers complete lifecycle from dispatch to result interpretation.

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 3. The description adds value by explaining the job_id's origin (from dispatch_*_async) and its role in polling, though doesn't expand on format beyond the schema's uuid pattern.

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 the status of a specialist dispatch job started via dispatch_<specialist>_async, with explicit return fields and usage pattern. It distinguishes its polling role from the async dispatch sibling tools.

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

Usage Guidelines5/5

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

Provides explicit instructions: call repeatedly after dispatch_*_async returns a job_id, sleep wait_ms_hint milliseconds between calls, and interprets status values. Also specifies when to retry vs give up based on error_class, following fleet resilience pattern.

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

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=false. The description adds valuable context: it is 'free — no compute cost,' resolves any session_id to the root, and behavior after close_session_tree (authoritative credits). This adds meaning beyond annotations without contradiction.

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

Conciseness4/5

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

The description is dense with information but well-structured. It opens with a concise summary, then details the parameter, output, use cases, and constraints. While it could be slightly more concise (e.g., some redundancy in explaining the parameter), it effectively front-loads the key 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 having no output schema, the description thoroughly explains the return values (every session row with fields, cost events, self_cost_cents, total raw compute, tier markup, credits). It also covers org-scoping, free cost, and the condition for authoritative credits. Given the complexity of a fleet tree, this is complete.

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?

The single parameter, root_session_id, is described in the schema with a detailed explanation. The tool description adds further clarification that any session_id in the tree can be provided and that the handler resolves to the root. This goes beyond the schema's description, adding significant meaning.

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

Purpose5/5

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

The description clearly states it is a 'Read-only walk of a fleet session tree' that returns a full cost breakdown. It specifies the exact data returned (depth, parent, agent_kind, node_label, cost_events, self_cost_cents, etc.) and its scope (org-scoped). This purpose distinguishes it from sibling tools like fleet_analytics_overview which likely provide different analytics.

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

Usage Guidelines4/5

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

The description lists explicit use cases: 'render cost breakdown UIs, audit fleet spend, or verify a session's tree topology.' It also notes org-scoping and that any session_id in the tree is accepted. While it does not explicitly say when not to use it or mention alternatives, the use cases are clear and sufficient for an agent to decide applicability.

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, idempotentHint, and destructiveHint. The description adds value by stating 'Free, read-only, idempotent — no credits consumed', reinforcing safety. It also explains the nature of the data (pattern intelligence, not finished copy). While it doesn't contradict annotations, it provides context beyond the structured hints.

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: first sentence states purpose, then outputs, usage guidelines, and negative examples. Every sentence adds value, and it is well-structured 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 tool with no output schema, the description adequately covers return values (hook examples, templates, mechanisms, performance data). Parameter coverage is complete via schema. Usage guidance and alternatives are clear. It lacks pagination or limit info, but that is not critical for this use case.

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 mentions the optional filters and gives examples (vertical, hook_type, marketing_angle), which reinforces the schema but doesn't add significant new information. No contradiction with 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 verb 'Browse' and the resource 'hook patterns from Heista's corpus of decoded winning Meta/TikTok ads'. It lists specific outputs (hook examples, pattern templates, psychological mechanism, performance data) and distinguishes itself from sibling tools like decode_ad and generate_adscript by stating what it doesn't do.

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 scenarios ('when the user asks...') and when-not-to-use ('Do NOT use to decode a specific ad URL — use decode_ad'). It also suggests pairing with other tools (adformula_intelligence, decoder_intelligence) for full context, offering clear guidance for the agent.

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 provide readOnlyHint and idempotentHint. The description adds 'Free, read-only' and describes the return payload as 'full body payload (framework, agent config, etc.)', offering useful 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?

The description is three sentences, each adding value: purpose, usage prerequisite, and cost/read-only status. Front-loaded and no wasted words.

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

Completeness4/5

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

For a simple get-by-id tool with annotations and schema, the description adequately covers what it does, what it returns, and how to use it. Lacks explicit return structure details, but not necessary given tool simplicity.

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?

With 100% schema description coverage, the schema already explains the 'id' parameter and the need to use the list tool. The description repeats this but adds no new meaning for the parameter itself.

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 'Get' and the resource 'static ads preset by id', including the full body payload. It distinguishes from sibling tools by specifying 'static ads preset' and referencing the matching 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?

The description explicitly instructs to call the matching list tool first to discover ids, providing clear context for when to use this tool. It does not include when-not-to-use, 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.

get_outfit_presetGet OutfitA
Read-onlyIdempotent
Inspect

Get one outfits 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 provide readOnlyHint and idempotentHint. Description adds context on return payload ('full body payload'), but 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?

Two concise sentences: first defines purpose, second provides prerequisite and cost. No unnecessary words.

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

Completeness4/5

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

Adequate for a simple single-parameter tool. States what it returns ('full body payload'), prerequisite list call, and cost. Could mention error handling but not critical.

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 has 100% coverage with format and pattern. Description adds crucial context: ids come from list tools, enabling correct parameter selection.

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 verb 'Get', resource 'outfits preset', and scope 'by id'. Distinguishes from sibling list_outfit_presets by noting to call 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 matching list tool first to discover ids, and declares tool as 'Free, read-only' indicating safe usage context.

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?

Disclosure of progressive partial results, silent ignore of include_raw for non-admins, and polling behavior adds value beyond annotations without contradiction.

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

Conciseness4/5

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

Well-structured with front-loaded purpose, usage instructions, and exclusions, though the list of returned items 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?

Despite no output schema, the description thoroughly covers polling, partial results, billing, and return fields, ensuring the agent can 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 coverage is 100%, so baseline 3; description adds clarification for include_raw (admin-only, silently ignored) and job_id origin, providing useful context.

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 retrieves or polls PowerSource scan results, specifies verb-resource pair, and differentiates from siblings 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?

Explicitly says when to use (immediately after create_* and poll every 3-5 seconds), when not to use (not to start new scan, not for video decode), and provides alternatives.

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 declare readOnlyHint and idempotentHint true. The description adds value by listing the returned fields (category, format, tags, etc.) and noting that media_url is signed if private storage. This enriches understanding 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 with no waste. The first states the core action and result; the second provides crucial usage context. Perfectly front-loaded.

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 fetch-by-id tool with one parameter, the description covers the purpose, usage timing, and return fields comprehensively. Annotations cover safety and idempotency. No gaps remain despite the absence of an 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% with the parameter 'asset_id' already described as 'Asset to fetch. Get from list_saved_assets.' The description adds no additional parameter information, so a 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?

The description clearly states 'Fetch one saved asset by id', specifying the verb and resource. It distinguishes from sibling 'list_saved_assets' by noting that this tool returns the full record when the list projection 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 advises to use this tool after 'list_saved_assets' to load the full record, providing clear when-to-use context. Does not explicitly mention when not to use, 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.

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

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

Adds behavioral details beyond annotations: batch size limit (50) and silent dropping of missing/cross-workspace ids. Annotations already declare readOnlyHint=true and 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?

Two sentences with no extraneous words. First sentence states core function; second sentence provides use case and important behavioral note.

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 and good annotations, the description fully covers the tool's behavior, including limit, silent drops, and guidance on handling missing IDs. No output schema needed as returns are standard.

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%, but the schema description is nearly identical to the tool description. The description does not add additional meaning beyond the 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?

Clearly states verb 'fetch', resource 'saved assets', and constraints 'by id in one round-trip'. Distinguishes from siblings like get_saved_asset and list_saved_assets by specifying batch size and ID-based retrieval.

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 use case: 'resolving a saved_asset_picker context input on a Heist'. Implies when not to use by contrasting with alternatives (get_saved_asset for single, list_saved_assets for listing). Lacks explicit 'do not use when', but context suffices.

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

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

Annotations already declare readOnlyHint true and idempotentHint true. Description adds that it is 'free, read-only' and mentions the full body payload included, 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 concise sentences: first states action and result, second gives prerequisite guidance. 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?

For a simple get-by-id tool with one parameter, annotations present, and no output schema, the description plus schema fully cover what the agent needs. Mentions payload content and free nature.

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 clear description of the id parameter. The function description repeats the list-tool hint but adds no new semantic meaning beyond schema.

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

Purpose5/5

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

Clearly states it gets one saved visual idea preset by ID with full payload. Distinguishes from list tools by specifying 'by id'.

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

Usage Guidelines4/5

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

Explicitly advises calling the matching list tool first to discover IDs. Does not explicitly exclude other alternatives but provides clear sequential guidance.

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

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

Describes return shape detailedly and notes 'Read-only, free, account-scoped.' Annotations already indicate readOnlyHint and idempotentHint, and description adds context about archive handling and the specific 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.

Conciseness4/5

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

The description is relatively long but front-loaded with the core action. Each sentence adds value, though some rephrasing could tighten it slightly.

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 2-parameter read-only tool with no output schema, the description covers the return shape, parameter details, usage context, and behavior regarding archived strategies. It is 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% with good parameter descriptions. The tool description adds extra context on the difference from get_powersource and the default for include_archived, enhancing understanding beyond the schema.

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

Purpose5/5

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

The description clearly states 'Read a creative strategy in full by its powersource_id' and distinguishes from siblings like list_strategies and get_powersource by specifying the key difference (using powersource_id instead of job_id).

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

Usage Guidelines5/5

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

Explicitly tells when to use: 'Use this when you already have a powersource_id...' and what to avoid: 'without the job_id round-trip that get_powersource needs.' Also explains default exclusion of archived strategies and how to include them.

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

get_talent_model_presetGet ModelA
Read-onlyIdempotent
Inspect

Get one models 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 'Free, read-only' and 'full body payload', giving extra behavioral context beyond annotations. No contradictions.

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

Conciseness5/5

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

Two concise sentences: first defines purpose and output, second gives usage direction. No redundant words; 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 get-by-id tool with one parameter and no output schema, the description covers purpose, prerequisite, and behavioral notes. It is complete given the tool's complexity and annotations.

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

Parameters3/5

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

Schema description coverage is 100%, and the parameter's schema description already explains how to discover ids. The tool description's mention of 'full body payload' provides some additional context about the expected return data.

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 'Get', the resource 'models preset', and the scope 'by id, including its full body payload'. It distinguishes from sibling get_*_preset tools by specifying the type 'talent model' and the full payload.

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 usage guidance. While it doesn't enumerate exclusions, the guideline is sufficient for the tool's simple get-by-id pattern.

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 and idempotentHint. Description adds 'including its full body payload' and 'Free, read-only', which aligns and adds useful context about the return content.

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 defines purpose, second provides usage guidance and safety. 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 get-by-id tool with no output schema, the description covers purpose, usage (call list first), and behavioral traits (free, read-only). Complete and self-sufficient.

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?

Only one parameter 'id' with UUID format described in schema. Description mentions discovering ids via list tool but does not add new semantic info beyond what the schema provides. Schema coverage is 100%, so 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 'get one visuals preset by id' with specific verb and resource. It distinguishes from sibling list tools by implying this is a specific retrieval function.

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 context for when to use this tool. Does not explicitly mention when not to use, but guidance is strong.

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

get_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, so the description does not need to repeat those. It adds value by specifying the full payload content and stating it is free and read-only, which further clarifies safety.

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 carrying essential information: what the tool returns, prerequisite action, and cost/safety. No wasted words, front-loaded with 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 simple get-by-id tool with one parameter, no output schema, and good annotations, the description provides all necessary context: what is returned, how to get the id, and that it is free and read-only. No 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 coverage is 100% and already describes the id parameter (UUID format, requirement to list first). The description reiterates the discovery step but adds minimal 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 (get), the specific resource (visual style preset), and the return payload (full body payload including framework, agent config). It also distinguishes from list tools 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 Guidelines4/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, which sets proper context. However, it does not mention when not to use this tool or provide alternatives beyond the list tool.

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

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

Annotations already declare readOnlyHint and idempotentHint, and the description reinforces 'Read-only, free', adding context about the data origin (Heista-curated) and filtering behavior (mutual exclusivity). No contradictions, full disclosure.

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 pack all essential information: purpose, nature, filtering, pagination. No filler words, front-loaded with key concepts. Every sentence earns its place.

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

Completeness4/5

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

Given no output schema, the description doesn't detail return structure, but it characterizes the content adequately ('cluster-level structural formulas'). Combined with 100% parameter docs and strong annotations, it provides sufficient context for a listing 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?

With 100% schema coverage, baseline is 3. Description adds value by explaining the mutual exclusivity of only_workspace and only_official, comparing to the 'in-app library lens', and clarifying brand_id's scope limitation. This goes 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 lists 'cluster-level structural formulas derived from decoded ads' and distinguishes it from other list tools by specifying its unique content (Heista-curated, generation parameter) and filter options (only_workspace/only_official), setting it apart from siblings like list_decoded_ad_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 implies usage for retrieving ad formula presets, with explicit filtering and pagination instructions. While it doesn't contrast directly with get_ad_formula_preset, the sibling context makes the distinction clear, and the mutual exclusivity of filters is well explained.

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

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

Annotations already provide readOnlyHint=true, idempotentHint=true, and openWorldHint=false. The description adds valuable behavioral context beyond annotations: it states 'Free, read-only,' describes pagination ('Paginated via cursor'), lists return fields ('Returns asset_id, signed url, type, detected_product_name, is_primary_product, sources'), and explains filtering semantics. 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 concise (5 sentences) and well-structured: it starts with the core purpose, then lists filters, provides usage guidance, mentions return fields and safety, and concludes with pagination. Every sentence adds value; no fluff or repetition.

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 no output schema, the description adequately explains return fields. It covers all 7 parameters, provides pagination info, and gives usage context. For a read-only list tool with good annotations, this description is fully complete.

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% (baseline 3), but the description adds meaningful context: it explains that powersource_id filters 'this scan only', product_name filters 'the vision tagger's read', type includes a list of examples, and is_primary_product filters to the scanned product's images. It also notes pagination via cursor. This goes beyond 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 it lists images for a brand with a specific verb 'List' and resource 'images for a brand'. It distinguishes from sibling tools like add_brand_asset and delete_brand_asset by providing usage context: 'Use this BEFORE generating any image-based output so you pick from the brand's real assets, not generic stock.' This makes the purpose unambiguous and differentiated.

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 gives explicit when-to-use guidance: 'Use this BEFORE generating any image-based output so you pick from the brand's real assets, not generic stock.' It also notes the tool is 'Free, read-only.' However, it does not explicitly state when not to use it or mention alternative sibling tools for adding or deleting assets, which would strengthen the guidelines.

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

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

Adds that the call is free and read-only beyond annotations, and describes pagination via cursor. No contradictions with readOnlyHint.

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, 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?

Covers purpose, full parameter set, pagination, cost, and column details despite no output schema. No gaps for a list 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%, so baseline 3. Description adds value by listing example doc_type values and advising to use 'indexed' filter for ready docs, enhancing parameter 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?

Explicitly states it lists brand documents for a brand, identifies specific columns, and contrasts with read_brand_document. Verb and resource are clear.

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?

Directly advises to use before read_brand_document to avoid read costs, plus mentions pagination and filtering. Provides clear when-to-use and alternative.

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 read-only, idempotent, and not open-world. Description adds 'Free, read-only' and explains the include_all parameter's effect on transient brands. 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?

Concise with no wasted words. Front-loaded with core purpose, followed by usage guidance, parameter clarification, and entity distinction. Each sentence serves a clear 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?

Despite missing output schema, the description covers return fields and the single parameter thoroughly. Provides essential context about entity relationships and usage patterns, making it complete for a list 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%. The description elaborates on the include_all parameter's behavior (returns transient vs. confirmed brands), adding valuable context 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?

The description explicitly states 'List every brand in this workspace,' includes specific fields returned (brand_id, name, domain, etc.), and distinguishes Brand from PowerSource, making the purpose unmistakably clear.

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: before creating a PowerSource to avoid duplicates, and to discover brands for pivoting a Heist. Gives example user queries and clearly distinguishes from related tools like get_brand and create_powersource_*.

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

list_cd_card_bookmark_presetsList Saved cardsA
Read-onlyIdempotent
Inspect

Cards the user bookmarked from Creative Director chat — directions, concepts, executions, brand platforms, art directions, visual sets. Surfaces in /library + the chat-side tray. Saves happen through the dedicated /api/creative-director/bookmarks route (NOT through /api/library), so is_savable is false here — the library surface is read-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.
Behavior4/5

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

Annotations already mark readOnlyHint and idempotentHint as true. Description adds valuable context: explains why is_savable is false (different save route) and clarifies read-only nature of the library surface. 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 concise (3-4 sentences) and front-loaded with purpose. Each sentence serves a purpose: purpose, save route and read-only note, filter scope, paging. 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?

Given good annotations and complete parameter descriptions, the description covers essential context: what the tool returns, where it's used, filter behavior, and paging. While response fields aren't detailed, this is acceptable without an output schema. The tool is well-documented for selection and invocation.

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 with descriptions for all 5 parameters. Description adds extra value by clarifying filter scope (mutual exclusivity of only_official/only_workspace, brand_id scoping only workspace presets) and referencing in-app behavior. This goes beyond basic schema info.

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 identifies the tool as listing bookmarked cards from Creative Director chat, specifying the source and usage contexts (surfaces in /library and chat-side tray). It distinguishes from sibling tools by noting the dedicated save route and explicit filtering.

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 (for CD chat bookmarks) and when not to (library surface is read-only, saves via different API). Explains filter parameters and their mutual exclusivity, mirroring in-app behavior. Provides paging details.

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 declare readOnlyHint and idempotentHint, so the bar is lower. The description adds useful context like 'free', 'Read-only', and explains the two scopes and their behavior with filtering, 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?

The description is concise and well-structured: front-loaded with purpose, then details on scope, filtering, and pagination. Every sentence is informative and earns its place, with 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?

Given the tool's simplicity and the richness of annotations and schema, the description covers all necessary aspects: what is listed, scopes, filtering, pagination, and read-only nature. It is complete for a list tool without an output schema.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds value by explaining the mutual exclusivity of 'only_official' and 'only_workspace' in a more integrated way and clarifies the UI analogy ('same toggle as the in-app library lens'), which adds meaning beyond individual 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 the tool lists reusable creative agents, distinguishing between workspace (private) and official (public template) agents. It provides specific verbs and resources, and differentiates from sibling tools like 'call_creative_agent_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?

The description explains when to use the tool (e.g., 'picked from the UI, callable as an MCP tool from Managed Agents') and details filtering options with mutual exclusivity. It does not explicitly state when not to use, but the context is clear from sibling 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_skill_presetsList Creative agent skillsA
Read-onlyIdempotent
Inspect

Portable craft skills (frameworks + method + worked examples) a Creative Agent loads ON TOP of its worldview — additive and stackable, never substitutive (unlike a creative_director_playbook, which replaces the agent for a session). Pinned per character on creative_agent_versions.skill_ids. Workspace = org-authored private skills; official = the Heista-curated starter library. 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.
Behavior5/5

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

Annotations already declare readOnlyHint and idempotentHint. The description adds behavioral context beyond that: skills are loaded ON TOP of worldview, additive and stackable, not substitutive; they are free; filters are mutually exclusive and behave like the in-app library toggle. 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?

Every sentence provides useful information: definition, contrast with sibling, storage location, filter options, mutually exclusive toggle, pagination. No filler or redundancy. Front-loaded with core concept.

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 does not detail the return format. However, it covers purpose, usage, filtering, and contrasts with alternatives. For a list tool, the return is assumed to be a list of skill preset objects, but explicit missing fields would improve 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% with detailed parameter descriptions. The description adds value by explaining the mutual exclusivity of only_workspace and only_official, the brand_id scope (workspace presets only, official unaffected), and the pagination pattern. This extra context elevates it above the baseline 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 defines skill presets as portable craft skills that are additive and stackable, contrasting them with creative_director_playbook which is substitutive. It specifies that skills are pinned per character on creative_agent_versions.skill_ids and distinguishes between workspace (org-authored) and official (Heista-curated) libraries. The verb 'list' is implicit but clear from the tool name and context.

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 this tool versus alternatives: unlike creative_director_playbook (which replaces the agent), skills are additive. It explains the filter scope options (only_workspace/only_official) as mutually exclusive and analogizes to an in-app library lens. Pagination via limit+offset is also noted.

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

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

Annotations already indicate `readOnlyHint` and `idempotentHint`; the description adds valuable behavioral context: the playbook substitutes Layers 3+4 of the system prompt, shaping agent identity. This goes beyond annotations and informs the agent of the side effects of the data retrieved.

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 (five sentences) and front-loaded with purpose. Every sentence adds value: what the tool does, its effect, data source distinction, filtering, and paging. 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?

Given the tool's complexity (5 parameters with constraints) and no output schema, the description fully covers purpose, behavioral impact, filtering, and paging. The agent has enough to use the tool correctly.

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%; each parameter has a description. The description reinforces the mutual exclusivity of `only_workspace`/`only_official` and paging, but adds minimal 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 tool lists creative-mechanism lenses (playbooks) used by the Creative Director chat at session start, distinguishing between workspace (private) and official (Heista-curated) sources. This differentiates it 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?

The description explains when to use the tool (to list presets for the Creative Director) and how to filter via `only_workspace`/`only_official` and page with `limit`/`offset`. It doesn't explicitly exclude alternative tools, but the context is sufficient for an AI agent to decide.

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 provide readOnlyHint=true and idempotentHint=true, so the description's 'Read-only, free' is consistent and adds minimal behavioral insight. The description adds context about the two data sources and the filtering behavior, but does not disclose any additional traits like ordering or rate limits. The transparency is adequate but not enhanced 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?

The description is three sentences long, with no redundant information. The first sentence uses abstract jargon ('Structural references for script-led Heists') but the rest is clear and directly explains sources and operations. The structure is front-loaded with key information, making it efficient for an agent 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 there is no output schema, the description should clarify what the tool returns. It mentions the sources (workspace decodes and official ads) but does not describe the response structure, fields, or ordering. For a listing tool with 5 parameters, this lack of output context leaves the agent uncertain about the return format, making it moderately 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?

All 5 parameters are documented in the schema (100% coverage). The description adds value by grouping the mutually exclusive filters and noting their relationship to the in-app library lens, and by summarizing pagination with limit and offset. This contextual grouping helps the agent understand parameter interactions, going beyond individual descriptions.

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 that the tool lists decoded ad presets from two sources (workspace and official), and the title confirms 'List Decoded ads'. The verb is implicit but clear. It distinguishes from siblings like 'get_decoded_ad_preset' and 'fleet_search_decoded_ads' by specifying the scope and filtering options, though the jargon 'Structural references for script-led Heists' slightly obscures the core function.

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 the mutually exclusive filters (only_workspace / only_official) and pagination (limit, offset), which guides usage. It mentions the 'same toggle as the in-app library lens', providing contextual understanding. However, it does not explicitly state when to use this tool versus search or single-get alternatives, though the context of listing vs. searching is implied.

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

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

Annotations already declare the tool as read-only and idempotent. The description adds specifics about the scope (workspace + Heista-curated) and the mutually exclusive filtering behavior, which goes beyond annotations and provides useful 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 three sentences, front-loaded with the core purpose, and each sentence provides essential information without fluff. It is concise 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?

The tool has no output schema, but the description sufficiently explains the input scope and behavior. It could mention the default ordering or what fields are returned, but given the simplicity and typical list behavior, it is 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%, so baseline is 3. The description adds value by explaining the mutual exclusivity of only_workspace/only_official and the pagination pattern, but does not add significant extra meaning 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?

The description explicitly states the tool lists static-ad references for image-led Heists, covering both workspace and Heista-curated presets. It uses specific verbs ('list') and resources ('static-ad references'), and distinguishes from sibling tools by specifying the image-led Heist context.

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

Usage Guidelines4/5

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

The description mentions filtering with only_workspace/only_official (mutually exclusive) and pagination with limit+offset, providing clear usage context. It does not explicitly exclude when not to use it, but the context is sufficient for differentiation from siblings.

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

list_outfit_presetsList OutfitsA
Read-onlyIdempotent
Inspect

Styled outfits — a talent dressed in a full look, saved as one composite sheet (turnaround + wardrobe detail crops) with structured refs to the product images that built it. The Outfits Heist saves them on click; future image/video Heists pick one to lock model + wardrobe in a single pick. Workspace = your saved outfits. Official = Heista-curated drops across casual, streetwear, activewear, business, evening, swim & resort, loungewear, and outerwear. 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. The description adds that the tool is free and read-only, explains the difference between workspace and official presets, and mentions paging. This adds useful behavioral 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.

Conciseness2/5

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

The description is overly long and includes tangential details about the Outfits Heist and composite sheets. It could be front-loaded with a simple 'List outfit presets with optional workspace/official filtering.' Many sentences add bulk without aiding tool selection.

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 parameters with full schema descriptions and supporting annotations, the description adds context on filtering and the nature of outfits. However, it lacks details on the return structure (e.g., fields of each preset, pagination metadata), which would improve 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 description coverage is 100%, so the schema already documents each parameter. The description adds value by clarifying the mutual exclusivity of only_workspace/only_official and linking it to the in-app library lens, as well as stating default page size and max.

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 indicates the tool lists outfits, but includes excessive background on what an outfit is and the Outfits Heist, which dilutes the primary purpose. It is clear but not maximally concise.

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 the two filter options (only_workspace/only_official) and notes they are mutually exclusive, providing context for when to use each. However, it does not compare this tool to siblings like get_outfit_preset or other list tools, nor does it 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.

list_projectsList ProjectsA
Read-onlyIdempotent
Inspect

List all projects (campaign folders) for a brand. A project groups strategies, documents, client assets, and outputs under one campaign. Returns project_id (pass as project_id to list_strategies / list_brand_documents / list_brand_assets to scope those reads to this project), name, status, start_date, target_date, and per-type counts. Free, read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
brand_idYesBrand to list projects for. Get from list_brands.
include_archivedNoInclude archived projects. Default false.
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 it is free and read-only, and specifies the returned fields including counts. This provides 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?

The description is concise, front-loaded with the main purpose, and each sentence adds value. No unnecessary information.

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 explains the return fields and how to use the project_id. For a list tool with two parameters, this is complete and provides sufficient 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 description coverage is 100%, so both parameters are well-documented in the schema. The description does not add additional meaning to the parameters beyond what the schema provides.

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

Purpose5/5

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

The description clearly states the tool lists all projects for a brand and explains what a project is. It distinguishes itself from sibling tools like list_brands and list_strategies by specifying the resource and scope.

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

Usage Guidelines4/5

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

The description tells how to use the returned project_id to scope reads in other tools, and notes it is free and read-only. However, it does not explicitly state when to avoid this tool or compare with alternatives like list_brands.

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

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

Annotations already declare readOnlyHint and idempotentHint. The description adds 'Free, read-only, paginated' and explains the data source difference for BRIEFS (creator_briefs with share URLs) vs other categories (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?

Description is longer due to comprehensive parameter explanations, but it is front-loaded with the core purpose. Every sentence provides useful information for an 11-parameter tool. Could be slightly trimmed but earned 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?

Given the complexity (11 params, no output schema), the description adequately describes the unified view, pagination, and data source differences. Annotations cover safety and idempotency. The lack of explicit return value info is mitigated by explaining what the tool backs.

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 interaction of category and formats ('e.g. COPY + formats=["ad-script","hook"]') and clarifying created_by resolution for OAuth. This 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?

Description clearly states 'List saved assets in the workspace' and enumerates specific filtering options. It distinguishes itself from siblings by mentioning the unified view backing the /assets page and the specific use case 'Use BEFORE asking the user what to pull 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 Guidelines4/5

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

Provides explicit context: 'Use BEFORE asking the user what to pull into a Heist' and explains the split between BRIEFS and other categories. Does not include explicit when-not-to-use or alternatives, but the sibling list suggests there are other asset-specific tools.

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

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

Annotations already declare readOnlyHint and idempotentHint. The description adds cost ('free') and scope ('Workspace-only'), plus clarifies filter behavior 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 concise sentences, front-loaded with purpose. Every sentence contributes unique information: resource identity, scope, cost, filter logic, and pagination. 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?

Covers essential usage information including scope, cost, filtering, and pagination. Although there is no output schema, the description doesn't detail return structure, but for a simple list tool with annotated safety, it is adequate.

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 parameter descriptions. The description adds value by explaining the mutual exclusivity of filters and analogizing to the in-app toggle, which helps the agent understand the interaction beyond the schema's individual 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 the tool lists saved visual idea presets, with precise resource identification ('visual ideas you saved from prior generations'). It distinguishes from sibling list tools by specifying workspace-only scope and unique filter options, making the purpose unambiguous.

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

Usage Guidelines4/5

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

Provides clear context for filter scopes (only_workspace/only_official) and mutual exclusivity, plus pagination guidance. Lacks explicit when-not-to-use compared to alternatives, but the sibling list names imply separate tool per preset type.

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 indicate readOnlyHint=true and idempotentHint=true, and the description adds 'Free, read-only' and explicitly states 'Returns frontmatter only — no body content (use load_skill for that).' This goes beyond the annotations to clarify the scope of results. 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 concise and well-structured: first sentence states the main action, second lists returns, third gives usage advice. No extraneous words. Every sentence adds value, making it efficient for an AI agent 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 rich schema (100% coverage with enums and descriptions) and annotations (read-only, idempotent), the description effectively completes the picture. It explains what is returned, how to filter, and the relationship to load_skill. No output schema is needed because the description enumerates returned 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 description coverage is 100%, so each parameter already has a detailed description in the schema. The tool description mentions filtering by domain, type, or source_folder but does not add new semantic information beyond what is in 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: 'List skills available in the Heista skill library.' It specifies the returned fields (name, description, domain, type, version, source_folder) and distinguishes itself from the sibling 'load_skill' by noting it returns frontmatter only. 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 Guidelines4/5

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

The description provides explicit usage guidance: 'Use BEFORE load_skill to discover what craft knowledge is available without paying the body-read cost.' This tells the agent when to use this tool versus the alternative. It also mentions filtering options. While it doesn't explicitly list when not to use it, the guidance is sufficient for effective tool selection.

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?

The description confirms the tool is read-only and idempotent, consistent with annotations, and adds valuable details: pagination via cursor, returns specific fields, and is free. No contradictions; it enriches beyond the structured data.

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 plus a list of return fields. Every sentence adds value without redundancy. Information is front-loaded, making it 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?

Despite no output schema, the description lists all essential return fields, mentions pagination with cursor, and clarifies the free, read-only nature. It covers all needed information for an agent to use the tool correctly.

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 the description does not need to add parameter details. It provides none beyond what the schema already offers, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool lists all PowerSource strategies for a brand, distinguishing between product-page and non-product strategies. It explicitly mentions the verb 'list' and resource 'strategies', and subtly distinguishes from the sibling tool get_strategy by implying the list 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 provides guidance on when to use the tool: to label strategies in conversation or pick the right one for product-focused generation. While it doesn't explicitly state when not to use it, the context of listing all vs. fetching one is clear given sibling tools. It implies use for enumeration tasks.

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?

Discloses return structure (one buyer profile entry, up to 3 primary audience segments) and sources. Annotations already declare read-only and idempotent, and description adds context about UI consistency. Minor missing detail about ordering, but sufficient.

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

Conciseness5/5

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

Two concise paragraphs, first for purpose and return data, second for usage and sibling differentiation. Every sentence adds value, 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 single parameter, full schema coverage, clear annotations, and no output schema, description fully covers what a user needs: what the tool does, what it returns, and how to get the required parameter.

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 description for powersource_id. Description reinforces 'Get from list_strategies' but adds no new semantics beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states it 'List audience archetypes for a strategy (PowerSource)' and specifies what is returned: Buyer Decoder archetype and up to 3 primary audience segments. It distinguishes from sibling list_strategies by noting it lists audiences inside one strategy.

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: 'Use this to pick which audience to target before generating copy / scripts / hooks — the UI picker reads the same projection.' It also differentiates from list_strategies, which lists scans for a brand.

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?

The description adds significant behavioral context beyond the readOnlyHint and idempotentHint annotations. It explains that today only one entry is returned, the shape is list-stable for future bundles, and it is synthesized by a specific agent. 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 concise at three sentences, front-loading the main purpose, then adding behavioral and usage details. Every sentence adds value with 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?

Given the simplicity (one parameter, no output schema), the description is complete. It covers what the tool does, when to use it, current limitations, and future stability, making it fully informative 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?

The input schema has 100% coverage with a detailed description for the sole parameter (powersource_id). The tool description repeats some of that information but adds no new meaning beyond what the schema already provides, so the 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?

The description clearly states the tool lists tone profiles for a strategy, specifies it returns the synthesized tone_of_voice, and notes it is for POWER-mode bundles only. This is a specific verb+resource pair, and it distinguishes itself from siblings like list_strategies and list_strategy_audiences by focusing on tone profiles.

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

Usage Guidelines4/5

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

The description provides context on when to use the tool ('before writing copy, hooks, or scripts' to align with brand voice). It does not explicitly state when not to use or mention alternatives, but the use case is clear enough.

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

list_talent_model_presetsList ModelsA
Read-onlyIdempotent
Inspect

Saved casting talent — a person you can re-use across Heists. The Models Heist saves them on click; future Heists can pick one as a brand-aware talent reference. Workspace = your saved castings. Official = Heista-curated drops across fashion, lifestyle, everyday, character, and creator buckets. 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 declare readOnlyHint and idempotentHint. The description adds value by stating 'Read-only, free' and explaining the mutual exclusivity of boolean filters and brand_id scope behavior. 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 moderately long but well-structured, starting with the core purpose and then adding details. Every sentence adds value, though it could be slightly more concise. No fluff; appropriate length for the concept.

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 absence of an output schema, the description provides sufficient context: what the list contains (workspace and official presets), filtering options, and pagination. It does not mention response structure or default ordering, but the high schema coverage and annotations compensate.

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?

The schema covers all parameters with descriptions (100% coverage). The description adds meaning by explaining that only_workspace and only_official are mutually exclusive, mirror the in-app library lens, and that brand_id only scopes 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?

The description clearly defines the tool as listing saved casting talent (workspace and official presets) with specific verb 'list' and resource description. It distinguishes itself from sibling list tools by detailing the two types of presets and their filtering scope.

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

Usage Guidelines4/5

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

The description provides clear usage context: it states the tool is read-only and free, explains the mutually exclusive filters only_workspace and only_official, and notes brand_id scoping only affects workspace presets. It lacks explicit 'when not to use' vs. other list tools, but the guidance 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_visual_preset_presetsList VisualsA
Read-onlyIdempotent
Inspect

Visual presets (style reference sets) backed by visual_heists. Dual scope since 2026-07-14: workspace rows saved from the Visual Preset builder + the Heista-curated official 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 already declare readOnlyHint and idempotentHint as true. The description adds valuable behavior: dual scope, mutually exclusive filters, paging with limit+offset. It also explicitly states 'Read-only, 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.

Conciseness5/5

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

The description is four sentences, front-loaded with the main purpose, and efficiently covers essential details without repetition or fluff. 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 and 5 parameters, the description covers purpose, filtering, paging, and safety. It mentions limit+offset but not default values. With annotations providing readOnly and idempotent hints, the description is fairly complete 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 the schema already documents all parameters well. The description reinforces the mutual exclusivity of only_workspace/only_official and the brand_id scope, but does not add significant new meaning beyond the schema text.

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

Purpose4/5

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

The description clearly states the tool lists visual presets (style reference sets) backed by visual_heists. The verb 'list' and resource are specific. While it does not explicitly differentiate from sibling list tools like list_visual_style_presets, the unique resource name and the mention of dual scope (workspace + official) provide sufficient 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 provides guidance on filtering with only_workspace/only_official and notes they are mutually exclusive, similar to the in-app library lens. It mentions read-only and free. However, it lacks explicit guidance on when to use this tool vs. alternatives (e.g., other list presets tools) or when not to use it.

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

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

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

Annotations already declare readOnlyHint and idempotentHint, so the description's mention of 'Read-only, free' aligns but adds only marginal value. It reinforces the safe nature but does not disclose any additional behavioral traits beyond what annotations provide. The description 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?

The description is concise (three short sentences) and front-loaded with the core purpose. Each sentence adds value: identifying presets, distinguishing categories, stating read-only nature, explaining filtering, and paging. No fluff or 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?

For a tool with 5 parameters and no output schema, the description covers filtering, scoping, and paging. It does not describe the return format, but the omission is acceptable given the annotations (read-only) and the clear input schema. The context is sufficient for an agent to select and invoke the tool correctly among many sibling list tools.

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%, and the description adds meaningful context: mutual exclusivity of only_official/only_workspace, default values for limit and offset, and the scoping behavior of brand_id. This goes beyond the schema's own descriptions, which already include details. The description helps the agent understand parameter interactions.

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 saved visual style presets, defines workspace vs official categories, and explains filtering options. The verb 'list' combined with resource 'visual_style_presets' with specific scope details makes the purpose unmistakable. It also distinguishes the tool from siblings by mentioning the Heista catalog and org ownership.

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 how to filter using only_workspace/only_official (mutually exclusive) and how to page with limit+offset. It provides clear context on when each filter applies, though it does not explicitly mention when to prefer this tool over alternatives like get_visual_style_preset or other list tools. Still, the guidance on filter usage is explicit and actionable.

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?

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds valuable behavioral context: 'Verifies content_hash against the registry and surfaces drift if the registry is out of sync with disk,' disclosing a verification step not evident from annotations. 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?

Four sentences, front-loaded with the primary function. Examples, sequencing advice, and return details are included without redundancy. Every sentence serves a purpose, and the structure is logical.

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 input schema (one parameter, no output schema) with rich annotations, the description fully covers what the tool does, what it returns (frontmatter + body + content_hash), and how to integrate it with other tools. No gaps remain.

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

Parameters4/5

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

Only one parameter 'name' exists, and its schema description already covers format and examples. The description reinforces this with 'canonical dot-notation name (e.g. ...). Find via list_skills first,' adding practical usage guidance beyond the schema. Since schema coverage is 100%, baseline is 3, but the additional context merits 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 loads the full SKILL.md body for a skill by canonical dot-notation name. It specifies the action (load), resource (SKILL.md body), and identifier format. It effectively distinguishes itself from sibling tools like list_skills (listing) and load_skill_reference (loading references).

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 'Use AFTER list_skills to pick the right skill' and 'For register-type skills with references/ folders, follow with load_skill_reference,' providing clear context for when and when not to use this tool. It also notes the tool is 'Free, read-only,' guiding appropriate usage.

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 declare readOnlyHint, idempotentHint, and openWorldHint. The description adds 'Free, read-only' and 'Path-traversal protected', providing security context beyond annotations. No contradictions are present.

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, each earning its place: first states the function, second gives the type constraint, third gives the source for filenames, and the fourth covers security and cost. It is front-loaded and has zero waste.

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

Completeness4/5

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

The description covers what the tool does, when to use it, and security. With 2 parameters fully documented in schema and annotations covering safety, the description is nearly complete. It lacks explicit error or return format details, but for a simple read operation this is acceptable.

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% and both parameters have descriptions. The description adds extra guidance: for skill_name it reiterates the type constraint, and for reference_path it adds the instruction about finding filenames via the router table, which adds 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 it loads one reference file from a register-type skill's references folder. The verb 'Load' and resource 'reference file' are specific. It distinguishes from other tools by explicitly contrasting with foundations and methodologies being inline content only.

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

Usage Guidelines5/5

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

The description explicitly says 'Only register-type skills have references/' and directs the agent to find valid filenames in the parent SKILL.md router table. This gives clear when-to-use and when-not-to-use guidance, effectively differentiating from sibling tools like load_skill and list_skills.

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

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

Beyond annotations (readOnlyHint, idempotentHint), the description provides critical behavioral details: how different mime types are handled (inlined, file_id, requires_code_execution) and the need to enable code execution for DOCX/PPTX/XLSX. This adds significant value for correct tool usage.

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 lengthy but well-structured, starting with the core purpose and then organizing mime-type handling clearly. Each sentence adds value, though the format could be slightly more compact.

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

Completeness4/5

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

Given the tool's complexity (multiple mime-type behaviors, code execution requirement) and the lack of an output schema, the description adequately covers the key aspects. It explains return values and necessary follow-up actions (attach file_id or enable code execution).

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?

There is only one parameter (document_id) with schema description that references list_brand_documents. The tool description does not add more detail about the parameter, but the schema description is clear. Given 100% schema coverage, the baseline is 3; the extra context in the description (e.g., 'pick the right document') bumps it to 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 it reads one indexed brand document and returns both metadata and content. It distinguishes from sibling tools like list_brand_documents (which lists documents) by specifying that this tool reads a single document, and from other tools by mentioning its role in the workflow.

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 instructs to use this tool AFTER list_brand_documents, providing workflow context. It also notes it's free and read-only. However, it does not explicitly mention when not to use it or list alternatives for other scenarios.

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

reclassify_brand_assetsReclassify Brand AssetsAInspect

Batch re-run the vision tagger against every asset in a brand that hasn't been reviewed yet (vision_classified=false). Recovers rows the scan-time tagger dropped because of CDN blocks (Shopify hotlink, Cloudflare bot gates) or transient failures. Skips videos and rows already marked not_asset. Processes up to 24 assets per call — if more remain, the response returns { remaining > 0 } and the caller can invoke again. Paid (batched vision tag credit, typically < $0.01 per invocation).

ParametersJSON Schema
NameRequiredDescriptionDefault
brand_idYesBrand whose unreviewed assets should be re-run through the vision tagger. Only assets with vision_classified=false are processed. Get from list_brands.
Behavior5/5

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

Beyond annotations (readOnlyHint=false, destructiveHint=false), the description discloses cost (<$0.01 per invocation), batching limit (24 assets), retry logic (remaining>0), and exclusions. It also explains the recovery mechanism, providing full transparency for an agent to make informed decisions.

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 (under 100 words) and well-structured, front-loading the main action and then providing critical details (skips, limits, cost). Every sentence serves a purpose 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?

Given the tool's complexity (batch processing, filtering, cost, batching limit), the description covers all necessary aspects. It even describes the response format despite no output schema, making it self-contained for an 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?

The sole parameter 'brand_id' is fully described in the schema (100% coverage). The description adds practical guidance ('Get from list_brands') and clarifies the context ('Only assets with vision_classified=false'), adding value beyond the schema's type and 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 uses specific verbs ('Batch re-run') and clearly identifies the resource ('vision tagger against every asset in a brand'), with conditions and exclusions that distinguish it from similar tools like 'retag_brand_asset'. It explicitly states the scope and purpose.

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

Usage Guidelines4/5

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

The description explains when to use (for assets dropped due to CDN blocks or transient failures) and what is skipped (videos and not_asset rows). It also details batching behavior and cost, but does not explicitly state alternative tools for different scenarios, though the context of batching vs. individual retagging is implied.

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

retag_brand_assetRetag Brand AssetAInspect

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

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

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

Annotations already indicate readOnlyHint=false and destructiveHint=false. The description adds crucial behavioral details: it reads stored objects or URLs, updates specific fields, and incurs a cost. No contradiction with annotations; the description enriches the behavioral profile beyond what annotations alone 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?

The description is three sentences with no waste. It front-loads the action, explains the mechanism, and ends with usage context and cost. Every sentence earns its place, and it is appropriately sized for a single-parameter tool.

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

Completeness4/5

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

The description covers purpose, mechanism, update fields, usage context, and cost. Given the low complexity (1 param, no output schema), it is sufficiently complete for an agent to decide to invoke. Could mention prerequisites or failure modes, but not required for basic utility.

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?

With 100% schema description coverage for the sole parameter (asset_id), the schema itself adequately explains the parameter meaning. The description adds context about how the asset is read but does not enhance parameter semantics beyond what is already in the schema. Baseline 3 applies.

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

Purpose5/5

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

The description clearly states the action: 'Re-run the vision tagger on one brand asset,' specifying the verb and resource. It distinguishes from the sibling 'reclassify_brand_assets' by emphasizing singleness and mentioning 'one brand asset' explicitly.

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

Usage Guidelines4/5

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

The description provides context for use: 'Useful when the original tagger run missed or misclassified an image,' and mentions the cost ('Paid (vision tag credit)'), guiding the agent on when to invoke. However, it does not explicitly exclude alternative tools or provide when-not conditions, though the sibling context implies batch vs single.

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

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

Annotations indicate readOnlyHint=false, so mutation is expected. The description confirms by saying 'persist' and 'create'. It adds context about source attribution for tracing and mention of downstream filtering. It does not elaborate on idempotency or rate limits, but the annotations already cover the safety profile. 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?

The description is a single paragraph of multiple sentences, front-loaded with the main action. It is relatively concise given 14 parameters, though could benefit from bullet points for readability. No wasted words.

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

Completeness4/5

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

Given the tool's complexity (14 params, nested objects, no output schema), the description covers the key aspects: purpose, required fields, constraints, source attribution, and return value. Optional fields are left to the schema, which is acceptable. The return statement 'Returns the inserted asset row' is sufficient.

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%, yet the description adds significant meaning: explains category restriction, format per-category, title requirement, recommendation for body_text and metadata, source attribution purpose, and brand/brief_id linking. This goes well 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 it persists a new saved asset. It specifies the category enum, format requirements, and distinguishes from BRIEFS which are not saveable here. It contrasts with sibling tools like delete_saved_asset and get_saved_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?

The description provides explicit guidance on when to use: category must be one of the listed ones, format must match per-category enum, title is required. It states that BRIEFS are not saveable here, and recommends body_text and metadata. It does not explicitly compare with other sibling tools like add_brand_asset, but the constraints are well articulated.

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

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

Annotations indicate readOnly (true) and openWorld (true), which the description aligns with by describing a read-only search that returns real content. The description adds behavioral context: the search is via parallel.ai, returns synthesized excerpts plus direct URLs, and solves a specific retrieval gap. 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 front-loaded with the core function, followed by use cases and parameter guidance. However, it includes a somewhat verbose reference to an internal document ('Phase 3.5 empirical A/B'), which could be shortened without losing meaning. Overall, it is efficient and well-organized.

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 compensates by detailing return content (synthesized text plus URLs). It explains the tool's purpose, differentiation, and parameter options thoroughly. The context of multi-platform discourse mapping and the reference to social-listening-synthesis provide sufficient completeness for an agent to select and use the tool 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?

Schema coverage is 100%, but the description adds significant meaning beyond the schema descriptions. For 'query', it clarifies it should be natural-language and focused on practitioner voice. For 'platforms', it provides concrete examples and a recommendation (≥3 platforms). It also reinforces the usage of 'after_date' and 'max_results'. This provides actionable guidance.

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 'community-discourse search' across multiple platforms, returning synthesized text excerpts and URLs. It explicitly distinguishes itself from perplexity_search, naming the gap it fills (Reddit/X retrieval). The verb 'search' combined with the resource 'community' is specific and informative.

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 use cases ('Use for:...'), including specific examples like 'what are practitioners saying about X' and 'verbatim quotes from named individuals'. It compares the tool to perplexity_search, highlighting its unique value. It also gives platform selection guidance, referencing an internal document for best practices.

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

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

The description adds behavioral details beyond annotations: it uses Perplexity Sonar Reasoning Pro, returns primary source URLs, mentions empirical A/B cost and quality comparisons, and specifies routing via Gateway. Annotations (readOnlyHint, openWorldHint, idempotentHint) are consistent.

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 (4 sentences) with front-loaded core purpose, bullet-like use cases, and clear exclusion guidelines. Every sentence adds value 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?

Given the absence of an output schema, the description adequately outlines the return format (synthesized answer text + structured sources with URLs). It covers primary use cases and limitations, but lacks details on pagination, error handling, or response size limits.

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 the schema already documents all parameters well. The description adds only a brief suggestion on query phrasing ('phrase as a precise factual question'), which is helpful but marginal. No additional detail on recency_filter or search_domain_filter 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 performs 'structured fact-check + numerical research' via a specific model, and specifies output categories. It distinguishes itself from siblings by explicitly listing what it is for and not for, and naming alternative tools.

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

Usage Guidelines5/5

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

The description provides explicit 'Use for' and 'NOT for' sections with concrete use cases (numerical claims, fact-check, earnings transcripts) and alternative tools (search_community for Reddit/X, search for broad topics). Also mentions cost advantage.

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!

Related MCP Servers

View all MCP Servers

Try in Browser

Your Connectors

Sign in to create a connector for this server.