Heista
REMOTE · WWW.HEISTA.CO · SCANNED AUG 3
Decode video ads, load brand intelligence, generate ad scripts.
Available components
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
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token. View diagnostics → Pass
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
- The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents. View diagnostics → Partial
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
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
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
claude mcp add --transport http co-heista-api https://www.heista.co/api/mcp/mcp
[mcp_servers.co-heista-api] url = "https://www.heista.co/api/mcp/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"co-heista-api": {
"type": "remote",
"url": "https://www.heista.co/api/mcp/mcp",
"enabled": true
}
}
} openclaw mcp add co-heista-api --url https://www.heista.co/api/mcp/mcp --transport streamable-http
mcp_servers:
co-heista-api:
url: "https://www.heista.co/api/mcp/mcp" {
"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.
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.
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 |
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.
add_brand_asset 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.
| Name | Type | Req | Description |
|---|---|---|---|
| brand_id | string | yes | Brand to add the asset to. Get from list_brands. |
| image_url | string | yes | Public 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 Ad Formula 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.
| Name | Type | Req | Description |
|---|---|---|---|
| algo_intent | string | — | 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_format | string | — | Creative format to filter by. Examples: TALKING_HEAD_BROLL, VOICEOVER_BROLL, UGC_TESTIMONIAL, PRODUCT_DEMO, SLIDESHOW_OVERLAY, INFLUENCER. Omit for all formats. |
| hook_type | string | — | 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. |
| limit | integer | — | Max formulas to return (1-10, default 5). |
| marketing_angle | string | — | Marketing angle to filter by. Examples: PROBLEM_SOLUTION, SOCIAL_PROOF_RESULTS, HOW_TO_TUTORIAL, INGREDIENT_SCIENCE, ASPIRATIONAL_IDENTITY, VALUE_STACK. Omit for all angles. |
| vertical | string | — | 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 Call Creative Agent ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_id | string | yes | The 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_id | string | — | 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_key | string | — | 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. |
| message | string | yes | The 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_id | string | — | 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_context | object | — | 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 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…
| Name | Type | Req | Description |
|---|---|---|---|
| brand_id | string | — | 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,… |
| brief | string | yes | The 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… |
| count | integer | yes | How 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_key | string | — | 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_hint | object | — | 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… |
| medium | string | — | 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 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.
| Name | Type | Req | Description |
|---|---|---|---|
| brand_id | string | — | 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). |
| message | string | yes | The 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_id | string | — | 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 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 Create PowerSource from Documents ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| brand_id | string | — | 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_url | string | — | Optional website URL to layer live brand context on top of the documents (colors, fonts, current messaging). |
| document_urls | array | — | Array of public URLs pointing to documents (PDF, DOCX, TXT, MD). Up to 10 URLs. |
| documents_inline | array | — | 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_ids | array | — | Array of file IDs from a previous upload. Up to 10 files. |
| idempotency_key | string | — | 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 Create PowerSource Full (URL + Documents) ~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).
| Name | Type | Req | Description |
|---|---|---|---|
| brand_id | string | — | 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_urls | array | — | Array of public URLs pointing to documents (PDF, DOCX, TXT, MD). Up to 10 URLs. |
| documents_inline | array | — | 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_ids | array | — | Array of file IDs from a previous upload. Up to 10 files. |
| idempotency_key | string | — | Optional unique key to make this call safely retryable. |
| url | string | yes | Website URL to analyze. Supports any public website. REQUIRED. |
No output schema declared.
No examples provided.
create_powersource_url Create PowerSource from 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.
| Name | Type | Req | Description |
|---|---|---|---|
| brand_id | string | — | 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_refresh | boolean | — | Force re-extraction of brand data even if cached. Use when a brand has rebranded or updated their website. |
| idempotency_key | string | — | Optional unique key to make this call safely retryable. If the same key + org repeats, the original result is returned without re-charging. |
| url | string | yes | Website URL to analyze. Supports any public website (e.g., gymshark.com, notion.so). Bare domains auto-resolve to https. |
| webhook_url | string | — | 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_get_authoring_contract Creative Library — 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 Creative Library — Get Draft ~46
Read one Creative Library draft so it can be reviewed before explicit publication.
| Name | Type | Req | Description |
|---|---|---|---|
| shelf | string | yes | One canonical Creative Library shelf. |
| slug | string | yes | The article slug. |
No output schema declared.
No examples provided.
creative_list_articles Creative Library — List Articles ~53
List Creative Library drafts and publication state. Returns editorial metadata only, not customer data.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | Page size, from 1 to 100. |
| offset | integer | — | Zero-based page offset. |
No output schema declared.
No examples provided.
creative_publish_article Creative Library — 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.
| Name | Type | Req | Description |
|---|---|---|---|
| expected_revision | string | yes | The exact revision returned by creative_get_draft after human review. |
| shelf | string | yes | The reviewed draft shelf. |
| slug | string | yes | The reviewed draft slug. |
No output schema declared.
No examples provided.
creative_save_draft Creative Library — 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.
| Name | Type | Req | Description |
|---|---|---|---|
| content | — | yes | — |
| frontmatter | — | yes | — |
No output schema declared.
No examples provided.
creative_unpublish_article Creative Library — 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.
| Name | Type | Req | Description |
|---|---|---|---|
| shelf | string | yes | The live article shelf. |
| slug | string | yes | The live article slug. |
No output schema declared.
No examples provided.
decode_ad Decode Video 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.
| Name | Type | Req | Description |
|---|---|---|---|
| idempotency_key | string | — | Optional unique key to make this call safely retryable. If the same key + org repeats, the original result is returned without re-charging. |
| url | string | yes | Video 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 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.
| Name | Type | Req | Description |
|---|---|---|---|
| algo_intent | string | — | Structural engine to filter by. Examples: PROBLEM_AGITATE_SOLVE, MECHANISM_REVEAL, TRANSFORMATION_ARC, SOCIAL_PROOF_STACK, COMPARISON_CONTRAST, URGENCY_SCARCITY. Omit for all intents. |
| brand | string | — | Filter by brand name (case-insensitive partial match). Examples: "Gymshark", "AG1", "Huel". Omit for all brands. |
| creative_format | string | — | Creative format to filter by. Examples: TALKING_HEAD_BROLL, VOICEOVER_BROLL, UGC_TESTIMONIAL, PRODUCT_DEMO, SLIDESHOW_OVERLAY, INFLUENCER. Omit for all formats. |
| hook_type | string | — | Filter by opening hook type. Examples: CURIOSITY_SPIKE, IDENTITY_HOOK, CONTRADICTION_HOOK, PROVOCATION, STORY_START, DIRECT_QUESTION_HOOK. Omit for all hook types. |
| limit | integer | — | Max decoded ads to return (1-10, default 5). |
| marketing_angle | string | — | Marketing angle to filter by. Examples: PROBLEM_SOLUTION, SOCIAL_PROOF_RESULTS, HOW_TO_TUTORIAL, INGREDIENT_SCIENCE, ASPIRATIONAL_IDENTITY, VALUE_STACK. Omit for all angles. |
| vertical | string | — | 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 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.
| Name | Type | Req | Description |
|---|---|---|---|
| asset_id | string | yes | Asset to delete. Get from list_brand_assets. |
No output schema declared.
No examples provided.
delete_saved_asset 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.
| Name | Type | Req | Description |
|---|---|---|---|
| asset_id | string | yes | Asset to delete. Get from list_saved_assets. |
No output schema declared.
No examples provided.
dispatch_desk_researcher 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).
| Name | Type | Req | Description |
|---|---|---|---|
| boundaries | string | yes | In scope vs out of scope. Explicit OUT_OF_SCOPE clauses. Constraints (e.g. "do not spawn further subagents", "only Meta paid social"). |
| objective | string | yes | One sentence stating what "done" looks like — the specific deliverable the specialist must return. From the four-part delegation contract (agent-authoring §5). |
| output_format | string | yes | The shape the specialist must return — schema, template, or specific format. If verbatim-return needed, say so explicitly (parent may summarize otherwise). |
| priority | string | — | standard (default) uses the specialist's production model; deep uses its escalation model (per _config/model-assignments.ts). |
| tool_guidance | string | yes | How 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 Dispatch (async) — desk-researcher ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| boundaries | string | yes | In scope vs out of scope. Explicit OUT_OF_SCOPE clauses. Constraints (e.g. "do not spawn further subagents", "only Meta paid social"). |
| objective | string | yes | One sentence stating what "done" looks like — the specific deliverable. From the four-part delegation contract (agent-authoring §5). |
| output_format | string | yes | The shape the specialist must return — schema, template, or specific format. If verbatim-return needed, say so explicitly. |
| priority | string | — | standard (default) uses the specialist's production model; deep uses its escalation model. |
| tool_guidance | string | yes | How 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 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).
| Name | Type | Req | Description |
|---|---|---|---|
| brief | string | yes | The 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_seconds | integer | — | 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. |
| priority | string | — | 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 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).
| Name | Type | Req | Description |
|---|---|---|---|
| boundaries | string | yes | In scope vs out of scope. Explicit OUT_OF_SCOPE clauses. Constraints (e.g. "do not spawn further subagents", "only Meta paid social"). |
| objective | string | yes | One sentence stating what "done" looks like — the specific deliverable the specialist must return. From the four-part delegation contract (agent-authoring §5). |
| output_format | string | yes | The shape the specialist must return — schema, template, or specific format. If verbatim-return needed, say so explicitly (parent may summarize otherwise). |
| priority | string | — | standard (default) uses the specialist's production model; deep uses its escalation model (per _config/model-assignments.ts). |
| tool_guidance | string | yes | How 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 Dispatch (async) — market-analyst ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| boundaries | string | yes | In scope vs out of scope. Explicit OUT_OF_SCOPE clauses. Constraints (e.g. "do not spawn further subagents", "only Meta paid social"). |
| objective | string | yes | One sentence stating what "done" looks like — the specific deliverable. From the four-part delegation contract (agent-authoring §5). |
| output_format | string | yes | The shape the specialist must return — schema, template, or specific format. If verbatim-return needed, say so explicitly. |
| priority | string | — | standard (default) uses the specialist's production model; deep uses its escalation model. |
| tool_guidance | string | yes | How 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 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).
| Name | Type | Req | Description |
|---|---|---|---|
| boundaries | string | yes | In scope vs out of scope. Explicit OUT_OF_SCOPE clauses. Constraints (e.g. "do not spawn further subagents", "only Meta paid social"). |
| objective | string | yes | One sentence stating what "done" looks like — the specific deliverable the specialist must return. From the four-part delegation contract (agent-authoring §5). |
| output_format | string | yes | The shape the specialist must return — schema, template, or specific format. If verbatim-return needed, say so explicitly (parent may summarize otherwise). |
| priority | string | — | standard (default) uses the specialist's production model; deep uses its escalation model (per _config/model-assignments.ts). |
| tool_guidance | string | yes | How 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 Dispatch (async) — qualitative-researcher ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| boundaries | string | yes | In scope vs out of scope. Explicit OUT_OF_SCOPE clauses. Constraints (e.g. "do not spawn further subagents", "only Meta paid social"). |
| objective | string | yes | One sentence stating what "done" looks like — the specific deliverable. From the four-part delegation contract (agent-authoring §5). |
| output_format | string | yes | The shape the specialist must return — schema, template, or specific format. If verbatim-return needed, say so explicitly. |
| priority | string | — | standard (default) uses the specialist's production model; deep uses its escalation model. |
| tool_guidance | string | yes | How 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 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).
| Name | Type | Req | Description |
|---|---|---|---|
| boundaries | string | yes | In scope vs out of scope. Explicit OUT_OF_SCOPE clauses. Constraints (e.g. "do not spawn further subagents", "only Meta paid social"). |
| objective | string | yes | One sentence stating what "done" looks like — the specific deliverable the specialist must return. From the four-part delegation contract (agent-authoring §5). |
| output_format | string | yes | The shape the specialist must return — schema, template, or specific format. If verbatim-return needed, say so explicitly (parent may summarize otherwise). |
| priority | string | — | standard (default) uses the specialist's production model; deep uses its escalation model (per _config/model-assignments.ts). |
| tool_guidance | string | yes | How 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 Dispatch (async) — quantitative-researcher ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| boundaries | string | yes | In scope vs out of scope. Explicit OUT_OF_SCOPE clauses. Constraints (e.g. "do not spawn further subagents", "only Meta paid social"). |
| objective | string | yes | One sentence stating what "done" looks like — the specific deliverable. From the four-part delegation contract (agent-authoring §5). |
| output_format | string | yes | The shape the specialist must return — schema, template, or specific format. If verbatim-return needed, say so explicitly. |
| priority | string | — | standard (default) uses the specialist's production model; deep uses its escalation model. |
| tool_guidance | string | yes | How 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 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).
| Name | Type | Req | Description |
|---|---|---|---|
| boundaries | string | yes | In scope vs out of scope. Explicit OUT_OF_SCOPE clauses. Constraints (e.g. "do not spawn further subagents", "only Meta paid social"). |
| objective | string | yes | One sentence stating what "done" looks like — the specific deliverable the specialist must return. From the four-part delegation contract (agent-authoring §5). |
| output_format | string | yes | The shape the specialist must return — schema, template, or specific format. If verbatim-return needed, say so explicitly (parent may summarize otherwise). |
| priority | string | — | standard (default) uses the specialist's production model; deep uses its escalation model (per _config/model-assignments.ts). |
| tool_guidance | string | yes | How 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 Dispatch (async) — social-listening-researcher ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| boundaries | string | yes | In scope vs out of scope. Explicit OUT_OF_SCOPE clauses. Constraints (e.g. "do not spawn further subagents", "only Meta paid social"). |
| objective | string | yes | One sentence stating what "done" looks like — the specific deliverable. From the four-part delegation contract (agent-authoring §5). |
| output_format | string | yes | The shape the specialist must return — schema, template, or specific format. If verbatim-return needed, say so explicitly. |
| priority | string | — | standard (default) uses the specialist's production model; deep uses its escalation model. |
| tool_guidance | string | yes | How 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 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).
| Name | Type | Req | Description |
|---|---|---|---|
| boundaries | string | yes | In scope vs out of scope. Explicit OUT_OF_SCOPE clauses. Constraints (e.g. "do not spawn further subagents", "only Meta paid social"). |
| objective | string | yes | One sentence stating what "done" looks like — the specific deliverable the specialist must return. From the four-part delegation contract (agent-authoring §5). |
| output_format | string | yes | The shape the specialist must return — schema, template, or specific format. If verbatim-return needed, say so explicitly (parent may summarize otherwise). |
| priority | string | — | standard (default) uses the specialist's production model; deep uses its escalation model (per _config/model-assignments.ts). |
| tool_guidance | string | yes | How 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 Dispatch (async) — trend-researcher ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| boundaries | string | yes | In scope vs out of scope. Explicit OUT_OF_SCOPE clauses. Constraints (e.g. "do not spawn further subagents", "only Meta paid social"). |
| objective | string | yes | One sentence stating what "done" looks like — the specific deliverable. From the four-part delegation contract (agent-authoring §5). |
| output_format | string | yes | The shape the specialist must return — schema, template, or specific format. If verbatim-return needed, say so explicitly. |
| priority | string | — | standard (default) uses the specialist's production model; deep uses its escalation model. |
| tool_guidance | string | yes | How 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 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.
| Name | Type | Req | Description |
|---|---|---|---|
| asset_id | string | yes | Asset to favorite or unfavorite. |
| is_favorite | boolean | yes | true to favorite, false to unfavorite. favorited_at is set/cleared in lockstep. |
No output schema declared.
No examples provided.
fetch_url 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.
| Name | Type | Req | Description |
|---|---|---|---|
| max_chars | integer | — | Maximum characters of extracted content to return. Default 8000. Higher returns more text but costs more in agent tokens. |
| url | string | yes | Absolute 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 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.
| Name | Type | Req | Description |
|---|---|---|---|
| days | — | — | Window in days: 7, 28, or 90. Default 7. |
No output schema declared.
No examples provided.
fleet_analytics_top_pages 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.
| Name | Type | Req | Description |
|---|---|---|---|
| days | — | — | Window in days: 7, 28, or 90. Default 7. |
| limit | integer | — | Max rows (default 20, hard cap 50). |
| path_prefix | string | — | Only include paths starting with this prefix (e.g. "/decode", "/intelligence", "/brands"). |
No output schema declared.
No examples provided.
fleet_analytics_trend 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.
| Name | Type | Req | Description |
|---|---|---|---|
| days | — | — | Window in days: 7, 28, or 90. Default 28. |
| metric | string | — | 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 Fleet — AI 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.
| Name | Type | Req | Description |
|---|---|---|---|
| bot | string | — | Filter to one bot (canonical names: gptbot, oai-searchbot, chatgpt-user, claudebot, claude-user, perplexitybot, perplexity-user, googlebot, bingbot, …). |
| days | integer | — | Window in days (default 28, max 180 — retention limit). |
| group_by | string | — | Aggregation: by bot (default — which engines are crawling), by page (what they fetch), or by date (crawl cadence). |
| limit | integer | — | Max rows (default 25, hard cap 100). |
| path_contains | string | — | Filter: page path contains this string (e.g. "/decode", "/intelligence"). |
No output schema declared.
No examples provided.
fleet_get_brand_report 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.
| Name | Type | Req | Description |
|---|---|---|---|
| slug | string | yes | Brand report slug from fleet_list_brand_reports. |
No output schema declared.
No examples provided.
fleet_get_decoded_ad 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.
| Name | Type | Req | Description |
|---|---|---|---|
| id_or_slug | string | yes | Decode id (uuid) or public slug — both appear in fleet_search_decoded_ads results. |
No output schema declared.
No examples provided.
fleet_get_issue Fleet — Get Linear 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.
| Name | Type | Req | Description |
|---|---|---|---|
| identifier | string | yes | Issue identifier like "HEI-14" (preferred) or the issue UUID. |
No output schema declared.
No examples provided.
fleet_gsc_inspect_url Fleet — Inspect URL Index Status ~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).
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | yes | Full heista.co URL to inspect (e.g. "https://www.heista.co/decode"). |
No output schema declared.
No examples provided.
fleet_gsc_query Fleet — Search Console Live 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.
| Name | Type | Req | Description |
|---|---|---|---|
| dimensions | array | yes | Group-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_date | string | — | ISO date. Default: 3 days ago (GSC lags ~2-3 days). |
| page_contains | string | — | Filter: page URL contains this string (e.g. "/decode"). |
| query_contains | string | — | Filter: search query contains this string. |
| row_limit | integer | — | Max rows (default 25, hard cap 100). |
| start_date | string | — | 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 Fleet — Sitemap Indexing Scoreboard ~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 Fleet — Search Performance 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.
| Name | Type | Req | Description |
|---|---|---|---|
| days | integer | — | Window in days (max 28 — GSC data lags ~2-3 days). Default 28. |
| page_prefix | string | — | Only include pages whose URL contains this path (e.g. "/decode"). |
No output schema declared.
No examples provided.
fleet_gsc_top_pages Fleet — Top Search 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.
| Name | Type | Req | Description |
|---|---|---|---|
| days | integer | — | Window in days (max 28). Default 28. |
| limit | integer | — | Max rows (default 25, hard cap 50). |
| order_by | string | — | Sort key. Default clicks. |
| query_contains | string | — | Only include rows whose search query contains this text. |
No output schema declared.
No examples provided.
fleet_gsc_top_queries Fleet — Top Search 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.
| Name | Type | Req | Description |
|---|---|---|---|
| days | integer | — | Window in days (max 28). Default 28. |
| limit | integer | — | Max rows (default 25, hard cap 50). |
| order_by | string | — | Sort key. Default clicks. |
| page_prefix | string | — | Only include pages whose URL contains this path. |
No output schema declared.
No examples provided.
fleet_intel_stats Fleet — Canonical Corpus 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 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.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | Max rows (default 10, hard cap 50). |
| offset | integer | — | Pagination offset. |
| query | string | — | Filter by brand name (partial match). |
No output schema declared.
No examples provided.
fleet_list_intelligence_articles 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.
| Name | Type | Req | Description |
|---|---|---|---|
| kind | string | — | Filter by article kind. |
| limit | integer | — | Max rows (default 10, hard cap 50). |
| offset | integer | — | Pagination offset. |
| vertical | string | — | Filter category articles by vertical. |
No output schema declared.
No examples provided.