Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, email [email protected] and we’ll put it right.

Heista

REMOTE · WWW.HEISTA.CO · SCANNED AUG 3

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

Available components

+8 this week 76 Trust /100
Trust breakdown (6 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score →

Endpoint Security94
Transport & Reachability100
Schema Quality & AI Usability48
  • 97% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Partial
  • AI-judged instruction clarity (poor).Fail
  • Context-footprint check failed: tool/resource definitions use about 29417 tokens (~260/item across 113 items; 112 tools + 1 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management27
  • Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 99% of tool parameters carry a description.Partial
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
  • Supports UI / widget rendering.Pass
Install

Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.

remote · www.heista.co

# add to Claude Code
claude mcp add --transport http co-heista-api https://www.heista.co/api/mcp/mcp
# ~/.codex/config.toml
[mcp_servers.co-heista-api]
url = "https://www.heista.co/api/mcp/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "co-heista-api": {
      "type": "remote",
      "url": "https://www.heista.co/api/mcp/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add co-heista-api --url https://www.heista.co/api/mcp/mcp --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  co-heista-api:
    url: "https://www.heista.co/api/mcp/mcp"
// mcp.json
{
  "mcpServers": {
    "co-heista-api": {
      "type": "http",
      "url": "https://www.heista.co/api/mcp/mcp"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 2 Aug 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

  • 31 Jul 26 +7
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 30 Jul 26 −1
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 29 Jul 26 +1
    • New tool “creative_publish_article”, which the server declares destructive security
    • New tool “creative_list_articles” functional
    • New tool “creative_save_draft” functional
    • New tool “fleet_product_signups_recent” functional
    • New tool “fleet_product_user_summary” functional
    • New tool “fleet_product_funnel_summary” functional
    • New tool “creative_get_authoring_contract” functional
    • New tool “creative_get_draft” functional
  • 27 Jul 26 +1
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 26 Jul 26 67

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 3 Aug 2026 · Probed https://www.heista.co/api/mcp/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=www.heista.co CN=YR1,O=Let's Encrypt,C=US 3 Jun 2026 1 Sept 2026 RSA 2048 SHA256-RSA 653a6e0cf70ce6f708f2a1e9958051f1e86
SANs: www.heista.co
CN=YR1,O=Let's Encrypt,C=US (CA) CN=Root YR,O=ISRG,C=US 3 Sept 2025 2 Sept 2028 RSA 2048 SHA256-RSA a20253f15f2691c05dc1ce13b9bcca4e
CN=Root YR,O=ISRG,C=US (CA) CN=ISRG Root X1,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 RSA 4096 SHA256-RSA f24b6d17f9d9ad7cb1c9fea78782699f
DNSSEC insecure

Validation of www.heista.co. Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
co. present 7786 8 Verified
heista.co. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication Enforced and verified

The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.

Result Enforced and verified
Enforced On tool calls
HTTP status 200

WWW-Authenticate challenge Bearer realm="mcp", resource_metadata="https://www.heista.co/.well-known/oauth-protected-resource/mcp"

Bearer realm="mcp", resource_metadata="https://www.heista.co/.well-known/oauth-protected-resource/mcp"
Header Value
strict-transport-security max-age=63072000; includeSubDomains; preload
x-content-type-options nosniff
x-frame-options DENY
referrer-policy strict-origin-when-cross-origin
permissions-policy camera=(), geolocation=(), microphone=(self)

Protected resource metadata

Document https://www.heista.co/.well-known/oauth-protected-resource/mcp
Retrieved Yes
Resource https://www.heista.co/api/mcp/mcp
Authorisation server https://www.heista.co
Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://www.heista.co/api/mcp/mcp Verified 200
http (plaintext) http://www.heista.co/api/mcp/mcp HTTPS enforced 308 https://www.heista.co/api/mcp/mcp
MCP tools — 112 exposed · ~25,794 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.

Tool Tokens
add_brand_asset ~140

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.

NameTypeReqDescription
brand_idstringyesBrand to add the asset to. Get from list_brands.
image_urlstringyesPublic HTTPS URL to fetch. The pipeline downloads, vision-tags, stores in the brand-assets bucket, and inserts a row.

No output schema declared.

No examples provided.

adformula_intelligence ~599

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.

NameTypeReqDescription
algo_intentstringStructural engine to filter by. Examples: PROBLEM_AGITATE_SOLVE, MECHANISM_REVEAL, TRANSFORMATION_ARC, SOCIAL_PROOF_STACK, COMPARISON_CONTRAST, URGENCY_SCARCITY. Omit for all intents.
creative_formatstringCreative format to filter by. Examples: TALKING_HEAD_BROLL, VOICEOVER_BROLL, UGC_TESTIMONIAL, PRODUCT_DEMO, SLIDESHOW_OVERLAY, INFLUENCER. Omit for all formats.
hook_typestringFilter 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.
limitintegerMax formulas to return (1-10, default 5).
marketing_anglestringMarketing angle to filter by. Examples: PROBLEM_SOLUTION, SOCIAL_PROOF_RESULTS, HOW_TO_TUTORIAL, INGREDIENT_SCIENCE, ASPIRATIONAL_IDENTITY, VALUE_STACK. Omit for all angles.
verticalstringIndustry 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…

No output schema declared.

No examples provided.

call_creative_agent_preset ~568

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.

NameTypeReqDescription
agent_idstringyesThe 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_templ…
brand_idstringOptional 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…
idempotency_keystringOptional unique key to make this call safely retryable. If the same key + org repeats within 5 minutes, the cached response returns without re-charging.
messagestringyesThe 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.
thread_idstringOptional 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).
working_contextobjectOptional 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 work…

No output schema declared.

No examples provided.

call_creative_worlds ~986

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 concept…

NameTypeReqDescription
brand_idstringOptional 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,…
briefstringyesThe 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…
countintegeryesHow many distinct creative territories to generate. Each will sit on different axis coordinates from the others — different psychology, different feel, different world. 2-6.
idempotency_keystringOptional 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.
lens_hintobjectOptional 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 un…
mediumstringOptional 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 c…

No output schema declared.

No examples provided.

chat_with_creative_worlds ~594

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.

NameTypeReqDescription
brand_idstringOptional 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).
messagestringyesThe 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 tag…
session_idstringPass 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 o…

No output schema declared.

No examples provided.

check_balance ~204

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.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

create_powersource_docs ~622

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.

NameTypeReqDescription
brand_idstringOptional 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.
context_urlstringOptional website URL to layer live brand context on top of the documents (colors, fonts, current messaging).
document_urlsarrayArray of public URLs pointing to documents (PDF, DOCX, TXT, MD). Up to 10 URLs.
documents_inlinearrayInline 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 layou…
file_idsarrayArray of file IDs from a previous upload. Up to 10 files.
idempotency_keystringOptional unique key to make this call safely retryable. If the same key + org repeats, the original result is returned without re-charging.

No output schema declared.

No examples provided.

create_powersource_full ~438

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).

NameTypeReqDescription
brand_idstringOptional 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).
document_urlsarrayArray of public URLs pointing to documents (PDF, DOCX, TXT, MD). Up to 10 URLs.
documents_inlinearrayInline 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.…
file_idsarrayArray of file IDs from a previous upload. Up to 10 files.
idempotency_keystringOptional unique key to make this call safely retryable.
urlstringyesWebsite URL to analyze. Supports any public website. REQUIRED.

No output schema declared.

No examples provided.

create_powersource_url ~491

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.

NameTypeReqDescription
brand_idstringOptional 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…
force_refreshbooleanForce re-extraction of brand data even if cached. Use when a brand has rebranded or updated their website.
idempotency_keystringOptional unique key to make this call safely retryable. If the same key + org repeats, the original result is returned without re-charging.
urlstringyesWebsite URL to analyze. Supports any public website (e.g., gymshark.com, notion.so). Bare domains auto-resolve to https.
webhook_urlstringHTTPS URL to receive a POST notification when the scan completes or fails. Eliminates need for polling.

No output schema declared.

No examples provided.

creative_get_authoring_contract ~42

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

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

creative_get_draft ~46

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

NameTypeReqDescription
shelfstringyesOne canonical Creative Library shelf.
slugstringyesThe article slug.

No output schema declared.

No examples provided.

creative_list_articles ~53

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

NameTypeReqDescription
limitintegerPage size, from 1 to 100.
offsetintegerZero-based page offset.

No output schema declared.

No examples provided.

creative_publish_article ~76

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

NameTypeReqDescription
expected_revisionstringyesThe exact revision returned by creative_get_draft after human review.
shelfstringyesThe reviewed draft shelf.
slugstringyesThe reviewed draft slug.

No output schema declared.

No examples provided.

creative_save_draft ~57

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.

NameTypeReqDescription
contentyes
frontmatteryes

No output schema declared.

No examples provided.

creative_unpublish_article ~70

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.

NameTypeReqDescription
shelfstringyesThe live article shelf.
slugstringyesThe live article slug.

No output schema declared.

No examples provided.

decode_ad ~311

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.

NameTypeReqDescription
idempotency_keystringOptional unique key to make this call safely retryable. If the same key + org repeats, the original result is returned without re-charging.
urlstringyesVideo URL to decode. Supports: Facebook Ad Library, TikTok, Instagram Reels, YouTube Shorts, or direct .mp4 URL.

No output schema declared.

No examples provided.

decoder_intelligence ~605

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.

NameTypeReqDescription
algo_intentstringStructural engine to filter by. Examples: PROBLEM_AGITATE_SOLVE, MECHANISM_REVEAL, TRANSFORMATION_ARC, SOCIAL_PROOF_STACK, COMPARISON_CONTRAST, URGENCY_SCARCITY. Omit for all intents.
brandstringFilter by brand name (case-insensitive partial match). Examples: "Gymshark", "AG1", "Huel". Omit for all brands.
creative_formatstringCreative format to filter by. Examples: TALKING_HEAD_BROLL, VOICEOVER_BROLL, UGC_TESTIMONIAL, PRODUCT_DEMO, SLIDESHOW_OVERLAY, INFLUENCER. Omit for all formats.
hook_typestringFilter by opening hook type. Examples: CURIOSITY_SPIKE, IDENTITY_HOOK, CONTRADICTION_HOOK, PROVOCATION, STORY_START, DIRECT_QUESTION_HOOK. Omit for all hook types.
limitintegerMax decoded ads to return (1-10, default 5).
marketing_anglestringMarketing angle to filter by. Examples: PROBLEM_SOLUTION, SOCIAL_PROOF_RESULTS, HOW_TO_TUTORIAL, INGREDIENT_SCIENCE, ASPIRATIONAL_IDENTITY, VALUE_STACK. Omit for all angles.
verticalstringIndustry 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…

No output schema declared.

No examples provided.

delete_brand_asset ~75

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.

NameTypeReqDescription
asset_idstringyesAsset to delete. Get from list_brand_assets.

No output schema declared.

No examples provided.

delete_saved_asset ~101

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.

NameTypeReqDescription
asset_idstringyesAsset to delete. Get from list_saved_assets.

No output schema declared.

No examples provided.

dispatch_desk_researcher ~338

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).

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

No output schema declared.

No examples provided.

dispatch_desk_researcher_async ~413

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.

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

No output schema declared.

No examples provided.

dispatch_head_of_research ~343

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).

NameTypeReqDescription
briefstringyesThe 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 concr…
max_wait_secondsintegerHard 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.
prioritystringstandard (default) uses production models in specialists; deep escalates to higher-capability models. Use deep when accuracy matters more than cost.

No output schema declared.

No examples provided.

dispatch_market_analyst ~322

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).

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

No output schema declared.

No examples provided.

dispatch_market_analyst_async ~397

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.

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

No output schema declared.

No examples provided.

dispatch_qualitative_researcher ~360

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).

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

No output schema declared.

No examples provided.

dispatch_qualitative_researcher_async ~435

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.

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

No output schema declared.

No examples provided.

dispatch_quantitative_researcher ~339

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).

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

No output schema declared.

No examples provided.

dispatch_quantitative_researcher_async ~414

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.

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

No output schema declared.

No examples provided.

dispatch_social_listening_researcher ~333

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).

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

No output schema declared.

No examples provided.

dispatch_social_listening_researcher_async ~408

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.

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

No output schema declared.

No examples provided.

dispatch_trend_researcher ~335

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).

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

No output schema declared.

No examples provided.

dispatch_trend_researcher_async ~410

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.

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

No output schema declared.

No examples provided.

favorite_saved_asset ~95

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.

NameTypeReqDescription
asset_idstringyesAsset to favorite or unfavorite.
is_favoritebooleanyestrue to favorite, false to unfavorite. favorited_at is set/cleared in lockstep.

No output schema declared.

No examples provided.

fetch_url ~218

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.

NameTypeReqDescription
max_charsintegerMaximum characters of extracted content to return. Default 8000. Higher returns more text but costs more in agent tokens.
urlstringyesAbsolute 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).

No output schema declared.

No examples provided.

fleet_analytics_overview ~100

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.

NameTypeReqDescription
daysWindow in days: 7, 28, or 90. Default 7.

No output schema declared.

No examples provided.

fleet_analytics_top_pages ~134

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.

NameTypeReqDescription
daysWindow in days: 7, 28, or 90. Default 7.
limitintegerMax rows (default 20, hard cap 50).
path_prefixstringOnly include paths starting with this prefix (e.g. "/decode", "/intelligence", "/brands").

No output schema declared.

No examples provided.

fleet_analytics_trend ~115

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.

NameTypeReqDescription
daysWindow in days: 7, 28, or 90. Default 28.
metricstringMetric for the daily series. v1 supports pageviews (split by source category: ai_search / organic / social / direct / referral).

No output schema declared.

No examples provided.

fleet_crawler_hits ~266

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.

NameTypeReqDescription
botstringFilter to one bot (canonical names: gptbot, oai-searchbot, chatgpt-user, claudebot, claude-user, perplexitybot, perplexity-user, googlebot, bingbot, …).
daysintegerWindow in days (default 28, max 180 — retention limit).
group_bystringAggregation: by bot (default — which engines are crawling), by page (what they fetch), or by date (crawl cadence).
limitintegerMax rows (default 25, hard cap 100).
path_containsstringFilter: page path contains this string (e.g. "/decode", "/intelligence").

No output schema declared.

No examples provided.

fleet_get_brand_report ~57

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.

NameTypeReqDescription
slugstringyesBrand report slug from fleet_list_brand_reports.

No output schema declared.

No examples provided.

fleet_get_decoded_ad ~98

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.

NameTypeReqDescription
id_or_slugstringyesDecode id (uuid) or public slug — both appear in fleet_search_decoded_ads results.

No output schema declared.

No examples provided.

fleet_get_issue ~92

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.

NameTypeReqDescription
identifierstringyesIssue identifier like "HEI-14" (preferred) or the issue UUID.

No output schema declared.

No examples provided.

fleet_gsc_inspect_url ~123

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).

NameTypeReqDescription
urlstringyesFull heista.co URL to inspect (e.g. "https://www.heista.co/decode").

No output schema declared.

No examples provided.

fleet_gsc_query ~281

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.

NameTypeReqDescription
dimensionsarrayyesGroup-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 si…
end_datestringISO date. Default: 3 days ago (GSC lags ~2-3 days).
page_containsstringFilter: page URL contains this string (e.g. "/decode").
query_containsstringFilter: search query contains this string.
row_limitintegerMax rows (default 25, hard cap 100).
start_datestringISO date (YYYY-MM-DD). Default: 28 days ago. GSC holds ~16 months of history.

No output schema declared.

No examples provided.

fleet_gsc_sitemaps ~73

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.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

fleet_gsc_summary ~122

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.

NameTypeReqDescription
daysintegerWindow in days (max 28 — GSC data lags ~2-3 days). Default 28.
page_prefixstringOnly include pages whose URL contains this path (e.g. "/decode").

No output schema declared.

No examples provided.

fleet_gsc_top_pages ~126

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.

NameTypeReqDescription
daysintegerWindow in days (max 28). Default 28.
limitintegerMax rows (default 25, hard cap 50).
order_bystringSort key. Default clicks.
query_containsstringOnly include rows whose search query contains this text.

No output schema declared.

No examples provided.

fleet_gsc_top_queries ~129

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.

NameTypeReqDescription
daysintegerWindow in days (max 28). Default 28.
limitintegerMax rows (default 25, hard cap 50).
order_bystringSort key. Default clicks.
page_prefixstringOnly include pages whose URL contains this path.

No output schema declared.

No examples provided.

fleet_intel_stats ~88

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.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

fleet_list_brand_reports ~103

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.

NameTypeReqDescription
limitintegerMax rows (default 10, hard cap 50).
offsetintegerPagination offset.
querystringFilter by brand name (partial match).

No output schema declared.

No examples provided.

fleet_list_intelligence_articles ~118

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.

NameTypeReqDescription
kindstringFilter by article kind.
limitintegerMax rows (default 10, hard cap 50).
offsetintegerPagination offset.
verticalstringFilter category articles by vertical.

No output schema declared.

No examples provided.