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

Heista

REMOTE · WWW.HEISTA.CO · SCANNED SEP 27

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

Available components

+60 this week 93 Trust /100
Trust breakdown (7 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 → Why this is hard to score →

Endpoint Security94
Transport & Reachability100
Schema Quality & AI Usability77
  • 97% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Partial
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 30622 tokens (~257/item across 119 items; 118 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 Management100
  • No destabilizing schema changes in the last 30 days.Pass
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
  • Structured output schemas are declared (1% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 4 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 120 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
  • Supports UI / widget rendering.Pass
Install

How do I install the Heista MCP server?

Heista is a hosted endpoint at https://www.heista.co/api/mcp/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · www.heista.co

# add to Claude Code
claude mcp add --transport http co-heista-api 'https://www.heista.co/api/mcp/mcp'
// .cursor/mcp.json
{
  "mcpServers": {
    "co-heista-api": {
      "url": "https://www.heista.co/api/mcp/mcp"
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "co-heista-api": {
      "type": "http",
      "url": "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"
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "co-heista-api": {
      "Transport": "http",
      "Url": "https://www.heista.co/api/mcp/mcp"
    }
  }
}
# add to Vellum
assistant mcp add co-heista-api -t streamable-http -u '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.

  • 26 Sept 26 +60
    • Transport: unverified → pass ▲ security
    • Injection markers: unverified → pass ▲ security
    • Stability: unverified → pass ▲ security
    • HSTS header: fail → pass ▲ security
    • Authorization: fail → pass ▲ security
    • The server rewrote its instructions, which are the text every model session reads security
    • Endpoint reachability: behind authorisation → reachable ▲ functional
    • MCP protocol: unverified → pass ▲ functional
    • Schema quality: unverified → 97 ▲ functional
    • Tool coverage: unverified → 100 ▲ functional
    • “fleet_crawler_hits” reworded the description of “path_contains” cosmetic
    • “fleet_site_pages” reworded the description of “path_contains” cosmetic
  • 25 Sept 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 15 Sept 26 −60
    • Endpoint reachability: reachable → behind authorisation ▼ security
    • Stability: pass → unverified ▼ security
    • Tool safety: pass → unverified ▼ security
    • Transport: pass → unverified ▼ security
    • Authorization: pass → fail ▼ security
    • HSTS header: pass → fail ▼ security
    • Schema quality: 97 → unverified ▼ functional
    • Capabilities: pass → unverified ▼ functional
    • Tool coverage: 100 → unverified ▼ functional
  • 26 Aug 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 25 Aug 26 0
    • Stability: 0.97 → pass security
    • New tool “creative_delete_draft”, which the server declares destructive security
    • New tool “creative_update_slug”, which the server declares destructive security
    • Tool “fleet_analytics_overview” rewrote its description, which is the text the model reads security
    • New tool “creative_get_shelf” functional
    • New tool “fleet_create_issue” functional
    • New tool “fleet_product_funnel_counts” functional
    • “fleet_crawler_hits” added an optional parameter “path_prefix” cosmetic
    • “fleet_site_pages” added an optional parameter “path_prefix” cosmetic
    • “fleet_crawler_hits” reworded the description of “path_contains” cosmetic
    • “fleet_site_pages” reworded the description of “path_contains” cosmetic
  • 21 Aug 26 0
    • Tool “read_brand_document” rewrote its description, which is the text the model reads security
  • 12 Aug 26 0
    • First check of Tool coverage: 1 functional
    • New tool “search_skills” functional
  • 11 Aug 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
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 27 Sept 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 4 Aug 2026 2 Nov 2026 RSA 2048 SHA256-RSA 68784c91387913c57c390ff2a467dc63bc5
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

Background: What to check on a remote MCP endpoint →

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

Background: How OAuth 2.1 works in the 2026 MCP spec →

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 · 118 exposed · ~27,003 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. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

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_intentstring–Structural engine to filter by. Examples: PROBLEM_AGITATE_SOLVE, MECHANISM_REVEAL, TRANSFORMATION_ARC, SOCIAL_PROOF_STACK, COMPARISON_CONTRAST, URGENCY_SCARCITY. Omit for all intents.
creative_formatstring–Creative format to filter by. Examples: TALKING_HEAD_BROLL, VOICEOVER_BROLL, UGC_TESTIMONIAL, PRODUCT_DEMO, SLIDESHOW_OVERLAY, INFLUENCER. Omit for all formats.
hook_typestring–Filter 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.
limitinteger–Max formulas to return (1-10, default 5).
marketing_anglestring–Marketing angle to filter by. Examples: PROBLEM_SOLUTION, SOCIAL_PROOF_RESULTS, HOW_TO_TUTORIAL, INGREDIENT_SCIENCE, ASPIRATIONAL_IDENTITY, VALUE_STACK. Omit for all angles.
verticalstring–Industry 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_idstring–Optional 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_keystring–Optional 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_idstring–Optional 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_contextobject–Optional 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_idstring–Optional 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_keystring–Optional 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_hintobject–Optional 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…
mediumstring–Optional 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_idstring–Optional 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_idstring–Pass 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_idstring–Optional 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_urlstring–Optional website URL to layer live brand context on top of the documents (colors, fonts, current messaging).
document_urlsarray–Array of public URLs pointing to documents (PDF, DOCX, TXT, MD). Up to 10 URLs.
documents_inlinearray–Inline 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_idsarray–Array of file IDs from a previous upload. Up to 10 files.
idempotency_keystring–Optional 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_idstring–Optional 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_urlsarray–Array of public URLs pointing to documents (PDF, DOCX, TXT, MD). Up to 10 URLs.
documents_inlinearray–Inline 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_idsarray–Array of file IDs from a previous upload. Up to 10 files.
idempotency_keystring–Optional 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_idstring–Optional 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_refreshboolean–Force re-extraction of brand data even if cached. Use when a brand has rebranded or updated their website.
idempotency_keystring–Optional 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_urlstring–HTTPS URL to receive a POST notification when the scan completes or fails. Eliminates need for polling.

No output schema declared.

No examples provided.

creative_delete_draft ~80

Permanently delete a Creative Library draft that has NEVER been published. Refused for any article with publication history — use creative_unpublish_article to take a live page down instead, which keeps the draft. Use this only to clear test or abandoned drafts.

NameTypeReqDescription
shelfstringyesThe draft shelf.
slugstringyesThe draft slug.

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_get_shelf ~73

Read one shelf hub as an object: its public URL, what it covers, what it deliberately does NOT cover (and which shelf owns each of those instead), and every article on it with status and live URL. Use it to check placement before drafting.

NameTypeReqDescription
shelfstringyesOne canonical Creative Library shelf.

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
limitinteger–Page size, from 1 to 100.
offsetinteger–Zero-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
content–yes–
frontmatter–yes–

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.

creative_update_slug ~122

Change an article slug and 301 the old URL at the new one. Never leaves two live URLs. Refuses a new slug ending in a year, a slug already in use, and any article whose draft is ahead of what is published (renaming republishes). Use this instead of saving a second article under a new slug.

NameTypeReqDescription
new_slugstringyesThe new slug. Must not end in a year.
shelfstringyesThe article shelf. Slug changes do not move shelves.
slugstringyesThe current 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_keystring–Optional 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_intentstring–Structural engine to filter by. Examples: PROBLEM_AGITATE_SOLVE, MECHANISM_REVEAL, TRANSFORMATION_ARC, SOCIAL_PROOF_STACK, COMPARISON_CONTRAST, URGENCY_SCARCITY. Omit for all intents.
brandstring–Filter by brand name (case-insensitive partial match). Examples: "Gymshark", "AG1", "Huel". Omit for all brands.
creative_formatstring–Creative format to filter by. Examples: TALKING_HEAD_BROLL, VOICEOVER_BROLL, UGC_TESTIMONIAL, PRODUCT_DEMO, SLIDESHOW_OVERLAY, INFLUENCER. Omit for all formats.
hook_typestring–Filter by opening hook type. Examples: CURIOSITY_SPIKE, IDENTITY_HOOK, CONTRADICTION_HOOK, PROVOCATION, STORY_START, DIRECT_QUESTION_HOOK. Omit for all hook types.
limitinteger–Max decoded ads to return (1-10, default 5).
marketing_anglestring–Marketing angle to filter by. Examples: PROBLEM_SOLUTION, SOCIAL_PROOF_RESULTS, HOW_TO_TUTORIAL, INGREDIENT_SCIENCE, ASPIRATIONAL_IDENTITY, VALUE_STACK. Omit for all angles.
verticalstring–Industry 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).
prioritystring–standard (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.
prioritystring–standard (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_secondsinteger–Hard 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.
prioritystring–standard (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).
prioritystring–standard (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.
prioritystring–standard (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).
prioritystring–standard (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.
prioritystring–standard (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).
prioritystring–standard (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.
prioritystring–standard (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).
prioritystring–standard (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.
prioritystring–standard (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).
prioritystring–standard (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.
prioritystring–standard (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_charsinteger–Maximum 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 ~266

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. FUNNEL EVENTS, so you know what each step counts: views = $pageview; engaged = pseo_session_summary with properties.engaged (scroll ≥25% or dwell); CTA = pseo_session_summary with properties.cta_clicks_count > 0, where a CTA is a click on a link to /auth/signup, /auth/login, /book-demo, /pricing or /workspace, or any element marked data-cta; signup = signup_completed; trial = trial.started. CTA auto-detection and Creative Library session tracking both began 2026-08-24 — a CTA step that rises from ~0 across that date is instrumentation landing, not a conversion change, and library figures before it were never measured. Any step that exceeds its 25s deadline reports TIMED OUT and is NOT a zero. Returns an error result if product analytics is not configured. Read-only.

NameTypeReqDescription
days––Window 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
days––Window in days: 7, 28, or 90. Default 7.
limitinteger–Max rows (default 20, hard cap 50).
path_prefixstring–Only 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
days––Window in days: 7, 28, or 90. Default 28.
metricstring–Metric 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 ~323

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
botstring–Filter to one bot (canonical names: gptbot, oai-searchbot, chatgpt-user, claudebot, claude-user, perplexitybot, perplexity-user, googlebot, bingbot, …).
daysinteger–Window in days (default 28, max 180 — retention limit).
group_bystring–Aggregation: by bot (default — which engines are crawling), by page (what they fetch), or by date (crawl cadence).
limitinteger–Max rows (default 25, hard cap 100).
path_containsstring–Filter: page path contains this anywhere. Over-matches — "/creative" also returns /creative-playbooks and /creative-development. Use path_prefix unless you deliberately want a substring.
path_prefixstring–Filter: page path STARTS WITH this (e.g. "/creative/library"). Anchored — this is the one you want. Prefer it over path_contains.

No output schema declared.

No examples provided.

fleet_create_issue ~192

File an issue on the Heista HEI board: title, markdown description, optional labels (Bug, Feature, Improvement, Security, SEO, Tech Debt, Upstream, In-App Support, In-App Feedback) and priority (0 none - 4 low, default 3). Unknown label names are dropped with a warning rather than failing the write. Locked to team HEI. Use it to record a real defect or a piece of work, not to take notes.

NameTypeReqDescription
descriptionstringyesMarkdown. Say what is broken, how to reproduce it, and what you expected.
labelsarray–Label names, e.g. ["Bug","SEO"]. Unknown names are dropped, not rejected.
priorityinteger–0 none, 1 urgent, 2 high, 3 medium, 4 low. Default 3.
titlestringyesOutcome-shaped title.

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_datestring–ISO date. Default: 3 days ago (GSC lags ~2-3 days).
page_containsstring–Filter: page URL contains this string (e.g. "/decode").
query_containsstring–Filter: search query contains this string.
row_limitinteger–Max rows (default 25, hard cap 100).
start_datestring–ISO 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
daysinteger–Window in days (max 28 — GSC data lags ~2-3 days). Default 28.
page_prefixstring–Only 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
daysinteger–Window in days (max 28). Default 28.
limitinteger–Max rows (default 25, hard cap 50).
order_bystring–Sort key. Default clicks.
query_containsstring–Only include rows whose search query contains this text.

No output schema declared.

No examples provided.

Common questions

What is the Heista MCP server?

Heista is an MCP server listed in the public MCP registry as co.heista/api. Decode video ads, load brand intelligence, generate ad scripts. This page covers its hosted endpoint (https://www.heista.co/api/mcp/mcp).

Is the Heista MCP server safe to use?

Heista scores 93 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Heista MCP server expose?

Heista exposes 118 tools: decode_ad, get_decode, create_powersource_url, get_powersource, create_powersource_docs, and 113 more. Their descriptions and schemas cost roughly 27,003 tokens of context every time the server is loaded.

Does the Heista MCP server require authentication?

Yes. Heista asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

Is the Heista MCP server still maintained?

Heista is still listed as active in the MCP registry. We last reached this channel on 27 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.