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.
fleet_list_issues Fleet — List Linear Issues ~223
List issues on the Heista Linear board (team HEI) — the read-only window into what the dev agents are working on, what's broken, and what's shipped. Filter by workflow state ("Backlog"/"Todo"/"In Progress"/"In Review"/"Done"), label ("Bug"/"Security"/"SEO"/"In-App Feedback"/…), or a title search. Returns identifier + state + priority + assignee + labels; use fleet_get_issue for the full description + comments. Hard cap 100 rows. Read-only — the fleet cannot create, edit, or close tickets.
| Name | Type | Req | Description |
|---|---|---|---|
| label | string | — | Filter by label name (e.g. "Bug", "Security", "SEO", "In-App Feedback"). |
| limit | integer | — | Max rows (default 30, hard cap 100). |
| query | string | — | Text search over issue titles (case-insensitive). |
| state | string | — | Filter by workflow state name: "Backlog", "Todo", "In Progress", "In Review", or "Done". |
No output schema declared.
No examples provided.
fleet_product_funnel_summary Fleet — Signup Funnel Summary ~119
Aggregate conversion/drop-off stats for a signup cohort (last N days, max 90): trial active vs expired-unconverted vs converted-to-paid, conversion rate, never-spent-a-credit rate, onboarding completion rate, and the most-installed Heists. Answers "where is the funnel leaking" in one call instead of aggregating individual summaries. Requires mcp:fleet:customer_pii. Every call is audit-logged. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| days | integer | — | Signup cohort window in days (max 90). Default 30. |
No output schema declared.
No examples provided.
fleet_product_signups_recent Fleet — Recent Signups ~123
List recent signups (last N days, hard cap 50 rows) with the same product-backend shape as fleet_product_user_summary — trial/credits/plan/onboarding/Heists per user. Use to see the newest cohort at a glance before drilling into individuals. Requires mcp:fleet:customer_pii. Every call is audit-logged. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| days | integer | — | Signup window in days (max 90). Default 7. |
| limit | integer | — | Max rows (default 20, hard cap 50). |
No output schema declared.
No examples provided.
fleet_product_user_summary Fleet — Customer Product Summary ~138
Look up ONE customer's product-backend state by email: trial status, credit balance, workspace plan, installed Heists, onboarding completion, plus PostHog attribution/engagement signals (source, 30d activity, page journey). This is the data PostHog structurally cannot see — whether they actually have active credits, are on a paid plan, or installed anything. Requires mcp:fleet:customer_pii (a separate, PII-adjacent scope — see Docs/systems/fleet-access.md). Every call is audit-logged. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| string | yes | The user email to look up. |
No output schema declared.
No examples provided.
fleet_search_decoded_ads Fleet — Search Decoded Ads ~196
Search the published Ad Intelligence corpus (the public decode gallery). Filter by free-text (name/tagline/brand), brand, category, vertical, or platform. Returns list rows with public URLs — never the full structural payload (use fleet_get_decoded_ad for that). Hard cap 50 rows per call; paginate with offset. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| brand | string | — | Filter by brand name (partial match). |
| category | string | — | Filter by gallery category (exact match — values from fleet_intel_stats / prior searches). |
| limit | integer | — | Max rows (default 10, hard cap 50). |
| offset | integer | — | Pagination offset. |
| platform | string | — | Filter by platform (e.g. facebook, tiktok). |
| query | string | — | Free-text match against ad name, tagline, and brand name. |
| vertical | string | — | Filter by vertical classification (exact match). |
No output schema declared.
No examples provided.
fleet_seo_recovery Fleet — SEO Indexing-Recovery Scorecard ~185
One-row verification scorecard for the indexing-recovery plan (internal-linking-spec-v2): site-wide + /decode-specific orphan counts (200 but zero internal inlinks) from the latest crawl, Googlebot vs other-bot crawl activity over a window (default 7 days, max 180), and Google Search Console impressions/clicks/avg-position over the trailing 28 days — each figure compared against the pre-fix baseline (1,521 orphans, 7 Googlebot pages/wk, 2 GSC impressions). Use this to confirm PR-A/B/C landed and is moving the needle, not just that the code shipped. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| days | integer | — | Crawler-hit window in days (default 7, max 180 — retention limit). GSC + orphan figures are always current-snapshot / trailing-28d. |
No output schema declared.
No examples provided.
fleet_site_audit_summary Fleet — Site Audit Summary ~78
One-row health scoreboard from the weekly full-site crawl: total pages, OK/redirect/error counts, ORPHAN pages (200 but zero internal inlinks — the primary indexing-recovery target), thin pages, missing meta/titles, total internal links, last crawl time. Start here before drilling into fleet_site_pages. Read-only.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
fleet_site_links Fleet — Site Link Graph ~138
Internal links for one page: direction "in" = who links TO it (zero inlinks = orphan), "out" = what it links to. Link data comes from the first render of sitemap-listed pages (pagination-only links are not observed — which mirrors crawler discovery). Hard cap 200 rows. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| direction | string | — | "in" = pages linking TO this path (default); "out" = pages this path links to. |
| limit | integer | — | Max rows (default 50, hard cap 200). |
| path | string | yes | Page path (e.g. "/decode/some-slug"). |
No output schema declared.
No examples provided.
fleet_site_pages Fleet — Site Pages Inventory ~242
Filterable inventory of every sitemap-listed page with SEO facts (title, meta description, canonical, h1, word count, JSON-LD) and internal inlink/outlink counts from the weekly crawl. Filters: path_contains, orphans_only (zero inlinks), max_word_count (thin content), status, missing_meta. Sorted fewest-inlinks first — the pages Google cannot discover float to the top. Hard cap 100 rows. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | Max rows (default 25, hard cap 100). |
| max_word_count | integer | — | Only pages at or below this visible word count (thin-content filter, e.g. 150). |
| missing_meta | boolean | — | Only pages missing a meta description. |
| offset | integer | — | Pagination offset. |
| orphans_only | boolean | — | Only pages with ZERO internal inlinks — the pages Google has no path to discover. |
| path_contains | string | — | Filter: path contains this string (e.g. "/decode/", "/intelligence"). |
| status | integer | — | Filter by HTTP status (e.g. 200, 308, 404). |
No output schema declared.
No examples provided.
generate_adscript Generate Ad Script ~825
Generate direct-response video ad scripts by fusing a proven structural source (decoded ad or formula) with a brand's PowerSource. Output is feed-native ad copy for paid social (Meta, TikTok, Reels) in the brand's voice — hook, beat-by-beat body, CTA close, plus visual direction per beat. Takes source_id (from adformula_intelligence, decoder_intelligence, or decode_ad), source_type ("formula" or "decode"), powersource_id (from any create_powersource_*), and tunable params: count (1-5 variants, tensions and selling points auto-rotated across variants), script_mode ("blueprint" preserves source structure exactly, "remix" preserves psychology but writes original copy), duration (target seconds), audience, tension override, selling_points override, voice_mode ("creator" for UGC default, "brand" for owned channels), and idempotency_key. Use this when the user says "write me a script", "I need a TikTok script", "write an ad based on this", or wants shell-faithful replication of a proven winner in their own brand voice. REQUIRES both a structural source AND a powersource — guide the user through creating either if missing. Metered pricing — typically 2-5 credits per script (~2 credits for 15s, ~5 credits for 60s). Pre-flight reserves a 17-credit ceiling and refunds the difference after measurement. Do NOT use to discover sources — use decoder_intelligence or adformula_intelligence first. Do NOT use to extract brand intel — use create_powersource_url first.
| Name | Type | Req | Description |
|---|---|---|---|
| audience | string | — | Audience segment from the PowerSource. "buyer_profile" (default) uses the composite buyer. "audience_0", "audience_1", etc. target specific segments. |
| count | integer | — | Number of scripts to generate (1-5, default 1). Each script uses a different tension and selling point combination for variety. |
| duration | integer | — | Target duration in seconds (remix mode only, 10-120). Blueprint mode locks to the source duration. |
| 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. |
| powersource_id | string | yes | Identifier for the brand PowerSource that supplies voice, selling points, tensions, and audience. Accepts either a job_id from create_powersource_* or a brief_id from get_powersource — both work. |
| script_mode | string | — | Script mode. "blueprint" (default) follows the source formula exactly — same beat structure, same timing. "remix" uses the psychological architecture but writes original copy. |
| selling_points | array | — | Lock to specific selling points from the PowerSource (max 5). Omit to let the system select the best match for each beat. |
| source_id | string | yes | The ID of the structural source to write from. For source_type="decode": either a job_id from your own decode_ad call OR an id from decoder_intelligence (corpus ad). For source_type="formula": a form… |
| source_type | string | yes | Type of structural source. "decode" = a single decoded ad (your own or from the corpus). "formula" = a clustered blueprint built from multiple winning ads. |
| tension | string | — | Lock to a specific behavioral tension from the PowerSource (e.g., "Frustration → Relief"). Omit to let the system select the best match. |
| voice_mode | string | — | Voice register for the script. "creator" (default) = authentic creator voice for UGC, PowerSource locks facts/tensions/selling points but NOT voice register. "brand" = full PowerSource brand voice fo… |
No output schema declared.
No examples provided.
get_ad_formula_preset Get Ad formula ~72
Get one ad formulas preset by id, including its full body payload (framework, agent config, etc.). Call the matching list tool first to discover ids. Free, read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Preset id. Discover ids by calling the matching list_<type>_presets first. |
No output schema declared.
No examples provided.
get_brand Get Brand ~91
Get a brand's full canonical record — name, domain, voice (tone_of_voice), story, visual identity (logo, primary color, visual assets), and counts. Use to inspect what a brand carries before deciding which Heist context to run, or to read the brand voice directly when writing copy. Free, read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| brand_id | string | yes | Brand to inspect. Get from list_brands. |
No output schema declared.
No examples provided.
get_cd_card_bookmark_preset Get Saved card ~74
Get one saved cards preset by id, including its full body payload (framework, agent config, etc.). Call the matching list tool first to discover ids. Free, read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Preset id. Discover ids by calling the matching list_<type>_presets first. |
No output schema declared.
No examples provided.
get_creative_agent_preset Get Creative agent ~73
Get one creative agents preset by id, including its full body payload (framework, agent config, etc.). Call the matching list tool first to discover ids. Free, read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Preset id. Discover ids by calling the matching list_<type>_presets first. |
No output schema declared.
No examples provided.
get_creative_agent_skill_preset Get Creative agent skill ~75
Get one creative agent skills preset by id, including its full body payload (framework, agent config, etc.). Call the matching list tool first to discover ids. Free, read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Preset id. Discover ids by calling the matching list_<type>_presets first. |
No output schema declared.
No examples provided.
get_creative_director_playbook_preset Get Creative Director playbook ~78
Get one creative director playbooks preset by id, including its full body payload (framework, agent config, etc.). Call the matching list tool first to discover ids. Free, read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Preset id. Discover ids by calling the matching list_<type>_presets first. |
No output schema declared.
No examples provided.
get_decode Get Decode Result ~232
Retrieve the full decode bundle for a previously-submitted ad, or poll the status of a running decode job. Takes a single job_id (UUID returned by decode_ad). Returns either status="processing" (call again in 15s) or the completed payload — exact transcripts per beat, director's read, per-cut visual data (shot_breakdown), visual psychology, behaviour biases, beat structure, hook classification, and runtime fields (active days on Meta Ad Library when the source supports it). Use this immediately after decode_ad and every 15 seconds until the job completes. Also use this to re-fetch a decode any time you need the full bundle for script writing (Path B) or as the source_id for generate_adscript (source_type="decode"). Free — billing happens at decode_ad submit time, not on retrieval. Do NOT use to discover or list decodes — use decoder_intelligence for browsing. Do NOT use to start a new decode — call decode_ad first.
| Name | Type | Req | Description |
|---|---|---|---|
| job_id | string | yes | Job ID returned by decode_ad. Call this tool to poll status or retrieve completed results. |
No output schema declared.
No examples provided.
get_decoded_ad_preset Get Decoded ad ~73
Get one decoded ads preset by id, including its full body payload (framework, agent config, etc.). Call the matching list tool first to discover ids. Free, read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Preset id. Discover ids by calling the matching list_<type>_presets first. |
No output schema declared.
No examples provided.
get_dispatch_result Get Dispatch Result ~158
Get the current status of a specialist dispatch job started via dispatch_<specialist>_async. Returns { status: queued|running|completed|failed, result_text?, error_text?, error_class?, retry_count, elapsed_seconds, wait_ms_hint }. Call this repeatedly after a dispatch_*_async returns a job_id. Sleep wait_ms_hint milliseconds between calls. When status === "completed", read result_text as the specialist's full synthesis. When status === "failed", error_class tells you whether to retry (transient/scope/routing) or give up and synthesize around (permanent) per the fleet resilience pattern.
| Name | Type | Req | Description |
|---|---|---|---|
| job_id | string | yes | The job_id returned by a previous dispatch_<specialist>_async call. |
No output schema declared.
No examples provided.
get_fleet_cost Get Fleet Cost Breakdown ~207
Read-only walk of a fleet session tree. Given any session_id in the tree (root, Head, Mastermind, or specialist sub-node) returns the full breakdown: every session row with depth + parent + agent_kind + node_label, the cost_events recorded against each, per-node self_cost_cents, total raw compute, tier markup estimate, and (after close_session_tree has run) the authoritative credits_charged + credits_refunded. Org-scoped: only sessions belonging to your org return data. Free — no compute cost. Use to render cost breakdown UIs, audit fleet spend, or verify a session's tree topology.
| Name | Type | Req | Description |
|---|---|---|---|
| root_session_id | string | yes | A session_id from anywhere in the fleet tree — root, Head, Mastermind, or specialist sub-node. The handler resolves to the actual root and walks the full subtree, so you do not need to know the root… |
No output schema declared.
No examples provided.
get_hook_intelligence Get Hook Intelligence ~446
Browse proven hook patterns from Heista's corpus of decoded winning Meta/TikTok ads. Takes optional filters: vertical (e.g. BEAUTY_SKINCARE, SUPPLEMENTS, APPAREL), hook_type (e.g. CURIOSITY_SPIKE, CONTRADICTION, CALLOUT), and marketing_angle. Returns hook examples (the real opener lines from successful ads), pattern templates, the psychological mechanism behind why each one stops the scroll within the first 1.5 seconds, and runtime performance data (active days on Meta when available). Free, read-only, idempotent — no credits consumed. Use this when the user asks "what hooks stop the scroll", "give me hook ideas", "how should I open this ad", "show me hooks for [vertical]", or needs scroll-stopping openers grounded in proven patterns rather than guessed copy. Useful before writing a script — pair with adformula_intelligence or decoder_intelligence for the full beat structure. Do NOT use to decode a specific ad URL — use decode_ad. Do NOT use to generate finished scripts — use generate_adscript. Hooks here are pattern intelligence, not finished copy.
| Name | Type | Req | Description |
|---|---|---|---|
| hook_type | string | — | Specific hook type to retrieve patterns for. Examples: CURIOSITY_SPIKE, OPEN_LOOP_STATEMENT, HIDDEN_TRUTH_REVEAL, IDENTITY_HOOK, CONTRADICTION_HOOK, PROVOCATION, STORY_START, DIRECT_QUESTION_HOOK, CH… |
| marketing_angle | string | — | Marketing angle to filter by. Examples: PROBLEM_SOLUTION, SOCIAL_PROOF_RESULTS, HOW_TO_TUTORIAL, OFFER_URGENCY, ASPIRATIONAL_IDENTITY, VALUE_STACK. Omit for all angles. |
| vertical | string | — | Industry vertical to filter corpus patterns. Examples: BEAUTY_SKINCARE, HEALTH_SUPPLEMENTS, FITNESS, FOOD_BEVERAGE, FASHION_APPAREL, SAAS_SOFTWARE, FINANCE_FINTECH, INFO_PRODUCTS, TECH_GADGETS. Omit… |
No output schema declared.
No examples provided.
get_image_ad_scan_preset Get Static ad ~73
Get one static ads preset by id, including its full body payload (framework, agent config, etc.). Call the matching list tool first to discover ids. Free, read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Preset id. Discover ids by calling the matching list_<type>_presets first. |
No output schema declared.
No examples provided.
get_outfit_preset Get Outfit ~71
Get one outfits preset by id, including its full body payload (framework, agent config, etc.). Call the matching list tool first to discover ids. Free, read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Preset id. Discover ids by calling the matching list_<type>_presets first. |
No output schema declared.
No examples provided.
get_powersource Get PowerSource Result ~306
Retrieve the full creative intelligence profile for a previously-submitted PowerSource scan, or poll the status of a running scan. Takes a job_id (UUID returned by any create_powersource_* tool) plus an optional include_raw flag (admin-only). Returns either status="processing" with partial progress or the completed bundle: brand identity, offer, 12 selling points, brand voice rules, buyer profile, 12 buyer tensions, angles, emotional arcs, ctas, proof, narrative. Use this immediately after any create_powersource_* call and every 3-5 seconds until status is "completed". During synthesis, partial intelligence appears progressively (buyer archetype first, then tensions, then angles) — inspect each poll response, useful signal arrives early. Also use this to re-fetch a finished PowerSource any time you need the brand layer for downstream work. Free — billing happens at submit time. Do NOT use to start a new scan — call create_powersource_url, _docs, or _full first. Do NOT use to retrieve a video decode — use get_decode.
| Name | Type | Req | Description |
|---|---|---|---|
| include_raw | boolean | — | Internal-only. When true and the caller holds mcp:internal_admin, returns the un-merged brief bundle alongside the merged response. Silently ignored for non-admin callers — no error is raised. |
| job_id | string | yes | Job ID returned by any create_powersource_* call. Use this to poll status or retrieve completed results. |
No output schema declared.
No examples provided.
get_saved_asset Get Saved Asset ~83
Fetch one saved asset by id. Returns the full row including category, format, tags, body_text/html, signed media_url (if private storage), metadata, creator, brand, and timestamps. Use AFTER list_saved_assets to load the full record when the list projection is too sparse.
| Name | Type | Req | Description |
|---|---|---|---|
| asset_id | string | yes | Asset to fetch. Get from list_saved_assets. |
No output schema declared.
No examples provided.
get_saved_assets_batch Get Saved Assets (Batch) ~134
Fetch up to 50 saved assets by id in one round-trip. Use when an agent needs to pull a pre-selected set — e.g. resolving a saved_asset_picker context input on a Heist that requires N pinned assets. Missing or cross-workspace ids are silently dropped; compare returned items vs requested ids to detect drops.
| Name | Type | Req | Description |
|---|---|---|---|
| asset_ids | array | yes | Up to 50 asset ids to fetch in one round-trip. Use when an agent needs to pull a pre-selected set of saves (e.g. resolving a saved_asset_picker declaration in a Heist). Missing/cross-workspace ids ar… |
No output schema declared.
No examples provided.
get_saved_visual_idea_preset Get Saved visual idea ~75
Get one saved visual ideas preset by id, including its full body payload (framework, agent config, etc.). Call the matching list tool first to discover ids. Free, read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Preset id. Discover ids by calling the matching list_<type>_presets first. |
No output schema declared.
No examples provided.
get_strategy Get Strategy ~270
Read a creative strategy in full by its powersource_id. Returns the same brand-merged bundle shape as get_powersource(data) — buyer profile, 12 behavioral tensions, angles, narrative direction, tone of voice, selling points, CTAs, proof, brand story, homepage data, offering — projected through the public PowerSource API serializer. Use this when you already have a powersource_id (from list_strategies) and want the full strategy payload in one call, without the job_id round-trip that get_powersource needs. Archived strategies are excluded by default (parity with list_strategies). Pass include_archived=true to read archived strategies. Read-only, free, account-scoped.
| Name | Type | Req | Description |
|---|---|---|---|
| include_archived | boolean | — | Include archived strategies. Default false (archived strategies are excluded from agent reads — same default as list_strategies). |
| powersource_id | string | yes | Strategy (PowerSource / brief) id. Get from list_strategies. Returns the full brand-merged bundle — buyer profile, 12 behavioral tensions, angles, narrative, tone of voice, selling points, CTAs, proo… |
No output schema declared.
No examples provided.
get_talent_model_preset Get Model ~72
Get one models preset by id, including its full body payload (framework, agent config, etc.). Call the matching list tool first to discover ids. Free, read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Preset id. Discover ids by calling the matching list_<type>_presets first. |
No output schema declared.
No examples provided.
get_visual_preset_preset Get Visual ~72
Get one visuals preset by id, including its full body payload (framework, agent config, etc.). Call the matching list tool first to discover ids. Free, read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Preset id. Discover ids by calling the matching list_<type>_presets first. |
No output schema declared.
No examples provided.
get_visual_style_preset Get Visual style ~72
Get one visual styles preset by id, including its full body payload (framework, agent config, etc.). Call the matching list tool first to discover ids. Free, read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Preset id. Discover ids by calling the matching list_<type>_presets first. |
No output schema declared.
No examples provided.
list_ad_formula_presets List Ad formulas ~208
Cluster-level structural formulas derived from decoded ads. Heista-curated; served as a generation parameter. Read-only, free. Filter scope with only_workspace / only_official (mutually exclusive — same toggle as the in-app library lens). Page with limit + offset.
| Name | Type | Req | Description |
|---|---|---|---|
| brand_id | string | — | Optional brand_id to scope workspace presets to. Get from list_brands. Official presets are not brand-scoped and are unaffected by this filter. |
| limit | integer | — | Page size. Default 24, max 100. |
| offset | integer | — | Offset for paging through results. Default 0. |
| only_official | boolean | — | When true, hide workspace (user-created) presets and only return Heista-curated (official) presets. Mutually exclusive with only_workspace. |
| only_workspace | boolean | — | When true, hide Heista-curated (official) presets and only return workspace (user-created) presets. Mutually exclusive with only_official. |
No output schema declared.
No examples provided.
list_brand_assets List Brand Assets ~287
List images for a brand. Filter by PowerSource (this scan only, via powersource_id), by on-pack product_name (the vision tagger's read), by type (logo, product, product_cutout, hero, lifestyle, ingredient, packaging, certification, before_after, infographic, screenshot, video, general), or by is_primary_product. Use this BEFORE generating any image-based output so you pick from the brand's real assets, not generic stock. Returns asset_id, signed url, type, detected_product_name, is_primary_product, sources. Free, read-only. Paginated via cursor.
| Name | Type | Req | Description |
|---|---|---|---|
| brand_id | string | yes | Brand to list assets for. Get from list_brands. |
| cursor | string | — | Pagination cursor returned as next_cursor on the previous page. |
| is_primary_product | boolean | — | Filter to only the scanned product's images (or its absence with false). |
| limit | integer | — | Page size. Default 50, max 200. |
| powersource_id | string | — | Filter to assets discovered during this PowerSource scan. |
| product_name | string | — | Filter to assets the vision tagger read as this on-pack product name. |
| type | string | — | Filter by image type: logo, product, product_cutout, hero, lifestyle, ingredient, packaging, certification, before_after, infographic, screenshot, video, general. |
No output schema declared.
No examples provided.
list_brand_documents List Brand Documents ~306
List indexed brand documents for a brand. Each row carries the indexed signals (doc_type, summary, key_topics, classification_confidence, indexing_status) plus mime_type and size_bytes from the underlying file. Filter by doc_type (one of 19 values incl. voice_tone_doc, brand_guidelines, strategy_memo, customer_interview, pitch_deck, general_reference) or by indexing_status (pending, running, indexed, error). Use BEFORE read_brand_document to discover what context exists for a brand without paying the read cost. Free, read-only. Paginated via cursor.
| Name | Type | Req | Description |
|---|---|---|---|
| brand_id | string | yes | Brand to list documents for. Get from list_brands. |
| cursor | string | — | Pagination cursor returned as next_cursor on the previous page (created_at ISO timestamp). |
| doc_type | string | — | Filter by classified document type. One of 19 values: voice_tone_doc, brand_guidelines, strategy_memo, brand_brief, pitch_deck, research_report, campaign_brief, tone_of_voice_synthesis, customer_inte… |
| indexing_status | string | — | Filter by indexing pipeline state. Use "indexed" to only see fully-processed docs ready to read. |
| limit | integer | — | Page size. Default 20, max 100. |
No output schema declared.
No examples provided.
list_brands List Brands ~205
List every brand in this workspace. Use this BEFORE creating a PowerSource to avoid creating duplicate brand records (pass the matching brand_id to create_powersource_*), and to discover brands the user can pivot a Heist to. Each row carries the brand_id (persistent identity), name, domain, asset_count, strategy_count, and brand status. Use this when the user asks "what brands do I have", "show me my brands", or before any image-led work where you need to know which brand owns assets. Free, read-only. Distinguish Brand (persistent, brand_id) from PowerSource (a scan, powersource_id). A brand has many PowerSources; pick the brand first, then narrow to a strategy with list_strategies.
| Name | Type | Req | Description |
|---|---|---|---|
| include_all | boolean | — | When true, returns transient (status="creating") and signal-less draft brands too. Default false matches the picker dropdown — only confirmed/draft brands with real data. |
No output schema declared.
No examples provided.
list_cd_card_bookmark_presets List Saved cards ~262
Cards the user bookmarked from Creative Director chat — directions, concepts, executions, brand platforms, art directions, visual sets. Surfaces in /library + the chat-side tray. Saves happen through the dedicated /api/creative-director/bookmarks route (NOT through /api/library), so is_savable is false here — the library surface is read-only. Read-only, free. Filter scope with only_workspace / only_official (mutually exclusive — same toggle as the in-app library lens). Page with limit + offset.
| Name | Type | Req | Description |
|---|---|---|---|
| brand_id | string | — | Optional brand_id to scope workspace presets to. Get from list_brands. Official presets are not brand-scoped and are unaffected by this filter. |
| limit | integer | — | Page size. Default 24, max 100. |
| offset | integer | — | Offset for paging through results. Default 0. |
| only_official | boolean | — | When true, hide workspace (user-created) presets and only return Heista-curated (official) presets. Mutually exclusive with only_workspace. |
| only_workspace | boolean | — | When true, hide Heista-curated (official) presets and only return workspace (user-created) presets. Mutually exclusive with only_official. |
No output schema declared.
No examples provided.
list_creative_agent_presets List Creative agents ~235
Reusable creative agents the Heist can pick as a handoff target — picked from the UI, callable as an MCP tool from Managed Agents. Workspace = private agents in the org. Official = public_template agents in any org. Read-only, free. Filter scope with only_workspace / only_official (mutually exclusive — same toggle as the in-app library lens). Page with limit + offset.
| Name | Type | Req | Description |
|---|---|---|---|
| brand_id | string | — | Optional brand_id to scope workspace presets to. Get from list_brands. Official presets are not brand-scoped and are unaffected by this filter. |
| limit | integer | — | Page size. Default 24, max 100. |
| offset | integer | — | Offset for paging through results. Default 0. |
| only_official | boolean | — | When true, hide workspace (user-created) presets and only return Heista-curated (official) presets. Mutually exclusive with only_workspace. |
| only_workspace | boolean | — | When true, hide Heista-curated (official) presets and only return workspace (user-created) presets. Mutually exclusive with only_official. |
No output schema declared.
No examples provided.
list_creative_agent_skill_presets List Creative agent skills ~267
Portable craft skills (frameworks + method + worked examples) a Creative Agent loads ON TOP of its worldview — additive and stackable, never substitutive (unlike a creative_director_playbook, which replaces the agent for a session). Pinned per character on creative_agent_versions.skill_ids. Workspace = org-authored private skills; official = the Heista-curated starter library. Read-only, free. Filter scope with only_workspace / only_official (mutually exclusive — same toggle as the in-app library lens). Page with limit + offset.
| Name | Type | Req | Description |
|---|---|---|---|
| brand_id | string | — | Optional brand_id to scope workspace presets to. Get from list_brands. Official presets are not brand-scoped and are unaffected by this filter. |
| limit | integer | — | Page size. Default 24, max 100. |
| offset | integer | — | Offset for paging through results. Default 0. |
| only_official | boolean | — | When true, hide workspace (user-created) presets and only return Heista-curated (official) presets. Mutually exclusive with only_workspace. |
| only_workspace | boolean | — | When true, hide Heista-curated (official) presets and only return workspace (user-created) presets. Mutually exclusive with only_official. |
No output schema declared.
No examples provided.
list_creative_director_playbook_presets List Creative Director playbooks ~255
Seven-section creative-mechanism lenses the Creative Director chat picks at session start. The picked playbook substitutes Layers 3 + 4 of the system prompt — voice + foundation — for the session (the lens IS who the agent is). Workspace = private playbooks; official = the Heista-curated catalog. Read-only, free. Filter scope with only_workspace / only_official (mutually exclusive — same toggle as the in-app library lens). Page with limit + offset.
| Name | Type | Req | Description |
|---|---|---|---|
| brand_id | string | — | Optional brand_id to scope workspace presets to. Get from list_brands. Official presets are not brand-scoped and are unaffected by this filter. |
| limit | integer | — | Page size. Default 24, max 100. |
| offset | integer | — | Offset for paging through results. Default 0. |
| only_official | boolean | — | When true, hide workspace (user-created) presets and only return Heista-curated (official) presets. Mutually exclusive with only_workspace. |
| only_workspace | boolean | — | When true, hide Heista-curated (official) presets and only return workspace (user-created) presets. Mutually exclusive with only_official. |
No output schema declared.
No examples provided.
list_decoded_ad_presets List Decoded ads ~226
Structural references for script-led Heists. Workspace decodes (your video_sources scans joined with their video_scan_frameworks) + Heista-curated decoded ads from official_ad_heists. Read-only, free. Filter scope with only_workspace / only_official (mutually exclusive — same toggle as the in-app library lens). Page with limit + offset.
| Name | Type | Req | Description |
|---|---|---|---|
| brand_id | string | — | Optional brand_id to scope workspace presets to. Get from list_brands. Official presets are not brand-scoped and are unaffected by this filter. |
| limit | integer | — | Page size. Default 24, max 100. |
| offset | integer | — | Offset for paging through results. Default 0. |
| only_official | boolean | — | When true, hide workspace (user-created) presets and only return Heista-curated (official) presets. Mutually exclusive with only_workspace. |
| only_workspace | boolean | — | When true, hide Heista-curated (official) presets and only return workspace (user-created) presets. Mutually exclusive with only_official. |
No output schema declared.
No examples provided.
list_image_ad_scan_presets List Static ads ~211
Static-ad references for image-led Heists. Workspace static scans + Heista-curated image ad heists. Read-only, free. Filter scope with only_workspace / only_official (mutually exclusive — same toggle as the in-app library lens). Page with limit + offset.
| Name | Type | Req | Description |
|---|---|---|---|
| brand_id | string | — | Optional brand_id to scope workspace presets to. Get from list_brands. Official presets are not brand-scoped and are unaffected by this filter. |
| limit | integer | — | Page size. Default 24, max 100. |
| offset | integer | — | Offset for paging through results. Default 0. |
| only_official | boolean | — | When true, hide workspace (user-created) presets and only return Heista-curated (official) presets. Mutually exclusive with only_workspace. |
| only_workspace | boolean | — | When true, hide Heista-curated (official) presets and only return workspace (user-created) presets. Mutually exclusive with only_official. |
No output schema declared.
No examples provided.
list_outfit_presets List Outfits ~289
Styled outfits — a talent dressed in a full look, saved as one composite sheet (turnaround + wardrobe detail crops) with structured refs to the product images that built it. The Outfits Heist saves them on click; future image/video Heists pick one to lock model + wardrobe in a single pick. Workspace = your saved outfits. Official = Heista-curated drops across casual, streetwear, activewear, business, evening, swim & resort, loungewear, and outerwear. Read-only, free. Filter scope with only_workspace / only_official (mutually exclusive — same toggle as the in-app library lens). Page with limit + offset.
| Name | Type | Req | Description |
|---|---|---|---|
| brand_id | string | — | Optional brand_id to scope workspace presets to. Get from list_brands. Official presets are not brand-scoped and are unaffected by this filter. |
| limit | integer | — | Page size. Default 24, max 100. |
| offset | integer | — | Offset for paging through results. Default 0. |
| only_official | boolean | — | When true, hide workspace (user-created) presets and only return Heista-curated (official) presets. Mutually exclusive with only_workspace. |
| only_workspace | boolean | — | When true, hide Heista-curated (official) presets and only return workspace (user-created) presets. Mutually exclusive with only_official. |
No output schema declared.
No examples provided.
list_projects List Projects ~118
List all projects (campaign folders) for a brand. A project groups strategies, documents, client assets, and outputs under one campaign. Returns project_id (pass as project_id to list_strategies / list_brand_documents / list_brand_assets to scope those reads to this project), name, status, start_date, target_date, and per-type counts. Free, read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| brand_id | string | yes | Brand to list projects for. Get from list_brands. |
| include_archived | boolean | — | Include archived projects. Default false. |
No output schema declared.
No examples provided.
list_saved_assets List Saved Assets ~463
List saved assets in the workspace. Filter by category (STRATEGY, IDEAS, COPY, VISUALS, MOTION, BRIEFS), by one or more formats inside the category (e.g. COPY + formats=["ad-script","hook"]), by tags (any/all), by brand_id, by brief_id (PowerSource), by created_by ("me" resolves to caller via OAuth), or favorites_only. Returns the unified view that backs the /assets page — BRIEFS rows come from creator_briefs with share URLs; other categories come from saved_assets. Use BEFORE asking the user what to pull into a Heist. Free, read-only, paginated.
| Name | Type | Req | Description |
|---|---|---|---|
| brand_id | string | — | Limit to one brand. |
| brief_id | string | — | Limit to one PowerSource (brief). |
| category | string | — | Tab filter. STRATEGY (positioning, brand platform), IDEAS (hooks, concepts, territories), COPY (ad scripts, hooks, campaign copy), VISUALS (static ads, product, lifestyle imagery), MOTION (talking he… |
| created_by | string | — | User id or the literal "me". When called via OAuth, "me" resolves to the caller. API-key callers MUST pass an explicit user id (no caller identity). |
| cursor | string | — | Pagination cursor returned as next_cursor on the previous page. |
| favorites_only | boolean | — | Restrict to favorited assets only. |
| formats | array | — | Multi-select format pills within a category. e.g. for COPY: ["ad-script","hook"]. See save_asset description for the full per-category enum. |
| limit | integer | — | Page size. Default 50, max 200. |
| search | string | — | Full-text search on title + body + tags. |
| tags | array | — | Tag filter. Default mode is `any` (OR). Switch to `all` with tags_mode. |
| tags_mode | string | — | How to combine tags. Default `any` (overlap). `all` requires every tag. |
No output schema declared.
No examples provided.
list_saved_visual_idea_presets List Saved visual ideas ~201
Visual ideas you saved from prior generations. Workspace-only. Read-only, free. Filter scope with only_workspace / only_official (mutually exclusive — same toggle as the in-app library lens). Page with limit + offset.
| Name | Type | Req | Description |
|---|---|---|---|
| brand_id | string | — | Optional brand_id to scope workspace presets to. Get from list_brands. Official presets are not brand-scoped and are unaffected by this filter. |
| limit | integer | — | Page size. Default 24, max 100. |
| offset | integer | — | Offset for paging through results. Default 0. |
| only_official | boolean | — | When true, hide workspace (user-created) presets and only return Heista-curated (official) presets. Mutually exclusive with only_workspace. |
| only_workspace | boolean | — | When true, hide Heista-curated (official) presets and only return workspace (user-created) presets. Mutually exclusive with only_official. |
No output schema declared.
No examples provided.
list_skills List Skills ~313
List skills available in the Heista skill library. Returns name, description, domain (shared / image / video / research / strategy / copy / creative / generation), type (foundation / registers / models / methodologies), version, and source_folder (managed-agents / chat-agent). Returns frontmatter only — no body content (use load_skill for that). Filter by domain, type, or source_folder. Use BEFORE load_skill to discover what craft knowledge is available without paying the body-read cost. Free, read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | — | Filter by domain. Use "all" or omit to get every skill. Available domains depend on what has been authored; current live domains include shared, image, video. Authoring will add research, strategy, c… |
| source_folder | string | — | Filter by source folder. "managed-agents" = fleet skills (Mastermind, Heads Of, fleet specialists). "chat-agent" = chat-surface lenses. "all" or omit to get everything. Folder is organisation only; a… |
| type | string | — | Filter by skill type. "foundation" = always-on craft baseline per domain. "registers" = router-table over a references/ folder (e.g. cinema-mode, lighting). "methodologies" = how-to skills for specif… |
No output schema declared.
No examples provided.
list_strategies List Strategies ~172
List all PowerSource strategies (scans) for a brand. A brand has many strategies — one per scanned URL. Product-page strategies carry product_name and is_product_page=true; use these to label them in conversation or to pick the right one for a product-focused generation. Returns powersource_id (use as the brief/PowerSource id everywhere else), product_name, scanned_at, source_url, is_pinned. Free, read-only. Paginated via cursor.
| Name | Type | Req | Description |
|---|---|---|---|
| brand_id | string | yes | Brand to list strategies for. Get from list_brands. |
| cursor | string | — | Pagination cursor returned as next_cursor on the previous page. |
| include_archived | boolean | — | Include archived strategies. Default false. |
| limit | integer | — | Page size. Default 20, max 100. |
No output schema declared.
No examples provided.
list_strategy_audiences List Strategy Audiences ~143
List audience archetypes for a strategy (PowerSource). Returns the Buyer Decoder archetype (source="buyer_profile", one entry max) plus up to 3 offering primary_audience segments (source="primary_audience"). Use this to pick which audience to target before generating copy / scripts / hooks — the UI picker reads the same projection. Distinct from list_strategies (which lists scans for a brand): this lists audiences INSIDE one strategy.
| Name | Type | Req | Description |
|---|---|---|---|
| powersource_id | string | yes | Strategy (PowerSource / brief) id. Get from list_strategies. Returns the buyer-decoder archetype plus up to 3 primary_audience segments. |
No output schema declared.
No examples provided.
list_strategy_tones List Strategy Tones ~131
List tone profiles for a strategy. Today returns at most one entry — the tone_of_voice synthesized by the Tone of Voice Synthesis agent (POWER-mode bundles only). The shape is list-stable so future multi-tone bundles plug in without changing the contract. Use this to align generation with the brand-tied voice DNA before writing copy, hooks, or scripts.
| Name | Type | Req | Description |
|---|---|---|---|
| powersource_id | string | yes | Strategy (PowerSource / brief) id. Get from list_strategies. Returns the synthesized tone-of-voice (at most one entry today; shape is list-stable for future multi-tone bundles). |
No output schema declared.
No examples provided.
list_talent_model_presets List Models ~252
Saved casting talent — a person you can re-use across Heists. The Models Heist saves them on click; future Heists can pick one as a brand-aware talent reference. Workspace = your saved castings. Official = Heista-curated drops across fashion, lifestyle, everyday, character, and creator buckets. Read-only, free. Filter scope with only_workspace / only_official (mutually exclusive — same toggle as the in-app library lens). Page with limit + offset.
| Name | Type | Req | Description |
|---|---|---|---|
| brand_id | string | — | Optional brand_id to scope workspace presets to. Get from list_brands. Official presets are not brand-scoped and are unaffected by this filter. |
| limit | integer | — | Page size. Default 24, max 100. |
| offset | integer | — | Offset for paging through results. Default 0. |
| only_official | boolean | — | When true, hide workspace (user-created) presets and only return Heista-curated (official) presets. Mutually exclusive with only_workspace. |
| only_workspace | boolean | — | When true, hide Heista-curated (official) presets and only return workspace (user-created) presets. Mutually exclusive with only_official. |
No output schema declared.
No examples provided.