← Registry

Marketing

hookdetector.com

An MCP server for generating marketing hooks with archetypes, templates, pricing, and wait-time estimates.

2 endpoints64 known toolsFirst detected September 19, 2026Last detected September 25, 2026

ENDPOINT 1

https://hookdetector.com/mcp

No auth detected

MCP server metadata

Name
vhgengine
Version
3.2.0
Capabilities
experimentalpromptsresourcestools
Server instructions

VHGENGINE - agents-first viral-hook engine. You are the customer; there is no human in a browser. Every step is machine-driven. GETTING STARTED 1. Call signup(beta_access_code="<YOUR-8-DIGIT-CODE>", idempotency_key="unique-retry-key", name=...) -> api_key. Substitute the code issued to you. The placeholder is deliberately NOT eight digits: an eight-digit guess passes schema validation, reaches signup, and spends a durable rate-limited attempt before the code is ever tested, returning 403 beta_access_denied. Standard access includes ten free product requests; owner access is unlimited. Signup retains 500 credits as a compatibility balance for historical ledgers, but beta operations charge zero. Exact signup replay recovers the same derived key. 2. Authenticate every other tool: pass api_key="..." on the call, OR send Authorization: Bearer <key> over HTTP, OR set VHGENGINE_API_KEY (stdio default). An unauthorized envelope carries details.reason (no_credential | revoked | unknown_key | deleted) and a hint naming the fix for THAT one. reason="revoked" means your account is intact: use list_keys / create_key, do NOT sign up again. 3. Call getting_started (free, no auth) for the evidence quickstart and archive boundary. ARCHIVED QUOTE METADATA: quote can still parse historical generation inputs and prices, but it cannot authorize or predict a runnable writer. Do not use it as a fallback for missing source evidence. VERIFIED EVIDENCE: research_hook_evidence requests up to thirty verified public source examples, separate from generated hooks. It publishes hard-gate and ranking receipts, never pads a short result, and accepts language, locale, format, source-minimum, and opener-verification policy. Where the approved provider runtime is bound, the call DISPATCHES to that provider and SPENDS vendor credits, bounded by a 600-second authorization: allow at least 610 seconds and do not re-ask with a fresh idempotency_key while it is still running. A 502 after about 300 seconds is the transport cutting a response that has sent no bytes, not the commission failing: the run finishes and is charged, so replay the same idempotency_key to receive the completed result at no additional charge. Where that runtime is not bound, the call makes no provider dispatch at all. Call health and read hook_research_provider_ready to see which posture you are on. unsupported_cell always means no provider call was made and the charge is zero, either because the request carries a planning deficiency or because that runtime is unavailable here. ARCHIVED MODES + COST / PRIVATE-BETA PRICING (base + per_hook * hooks_returned): instant 0+0/hook, smart 0+0/hook, research 0+0/hook, 0 at count=10. Customer pricing is zero. Aliases and wait fields remain stored-client metadata. Pricing rows keep literal {base, per_hook} fields for compatibility. Every generation, batch, job, and remix writer fails before work or billing. Reads (getting_started, pricing, get_estimates, list_archetypes, get_account, get_usage, get_activity, get_job, list_jobs, list_keys, list_hooks, get_hook, list_outcomes, list_runs, list_billing_events, list_creator_profiles, get_creator_profile, health) are free. LOST A RESPONSE? list_runs(request_id=...) is the receipt for any call you were charged for, newest first; follow its `hooks_url` for the hooks that call produced instead of re-running (and re-charging) the request. Bought hooks are retrievable for 90 days via list_hooks / get_hook (kept indefinitely once you report an outcome on them); list_hooks(mode=) takes the legacy generation vocabulary, aliases included, and resolves each to the stored instant|smart|research|remix, while list_hooks(tag=) is an exact literal slug match ("_" is a tag character, not a wildcard). Report what a hook actually did once posted with report_outcome (free; caller-supplied and not independently verified, retained for future calibration, but not consumed by generation, scoring, or retrieval today and no view prediction is claimed; list_hooks(unreported=true) finds rewardable hooks); read your reported outcomes in bulk with list_outcomes. Manage API keys with create_key / list_keys / revoke_key (free). Keep reusable, account-owned creator declarations with create_creator_profile / list_creator_profiles / get_creator_profile / update_creator_profile / delete_creator_profile. These versioned caller declarations and deny-by-default secondary-use decisions are stored for governance; VHGENGINE does not verify authority, and learning/retrieval do not consume them today. Export the ledger, every hook/immutable served instance/non-prose lineage marker/outcome, and retained jobs, commissions, and request tags in ONE call with export_usage, then leave cleanly with delete_account (terminal; keeps the financial ledger and de-associates outcomes from the account while retaining their submitted content, URLs, and tags in the shared corpus). ARCHIVED WAIT GUIDANCE: expected_wait {p50_ms, p90_ms, source}, progressToken, and generation-job fields remain readable for stored clients. No archived writer starts, streams progress, or queues work. SOURCE-FREE GENERATION IS ARCHIVED. generate_hooks, generate_hooks_batch, remix_hook, and start_generate_job fail before model, provider, queue, persistence, or billing work. They cannot create substitutes for missing research supply, so cancellation cannot leave hidden generated hooks or charges. Use research_hook_evidence with an idempotency_key; it returns only source-proven public footage or an honest shortfall/unsupported outcome. ERRORS are one typed envelope: {"error": {code, message, retriable, retry_after_seconds, details (with a next-action hint), request_id}}. Common codes: unauthorized, forbidden (key lacks the scope), beta_access_denied, beta_quota_exhausted, invalid_request, not_found, conflict, insufficient_credits (retained compatibility error; customer operations are zero-priced during beta), llm_unavailable (legacy compatibility error, never an evidence fallback), configuration_unavailable (the operator must install a required security secret), capability_disabled (the operation is defined but its measured writer remains off), idempotency_conflict, rate_limited (honor retry_after_seconds; get_account.rate_limit shows the remaining window so a fleet can pace BEFORE being throttled), internal. Each tool's docstring lists the errors it can return. A failed resource read (vhgengine://...) carries the SAME envelope in the JSON-RPC error's `data` field, with the message repeated in `message`. SCHEMAS: every tool advertises both an inputSchema (per-argument descriptions, enums and bounds) and an outputSchema naming the keys it returns. Read them instead of guessing, and instead of paying for a call to discover a field name. IDEMPOTENCY: pass idempotency_key on signup / generate_hooks / generate_hooks_batch / research_hook_evidence / score_hook / score_hooks_batch / remix_hook / add_credits / start_generate_job / report_outcome / create_creator_profile / update_creator_profile / delete_creator_profile; a replay returns the stored result (replayed:true) and never applies the write twice or re-charges. Profile deletion erases its old create/update replay bodies; reusing one of those keys fails closed with idempotency_conflict and reason=resource_deleted instead of recreating the profile.

Known tools 45

signup

Redeem a private-beta code and create an account.

Potential side effects
getting_started

The 5-step agent quickstart: modes, wait guidance, links.

Inferred read-only
list_archetypes

List the hook archetypes with psychology, platforms, and templates.

Inferred read-only
pricing

The machine-readable price list, with per-mode expected_wait.

Inferred read-only
get_estimates

The measured/expected wait per generation mode.

Inferred read-only
health

Deep health: DB read+write probe, worker/queue, backup + integrity.

Potential side effects
get_account

Return this account's state + remaining rate-limit budget.

Inferred read-only
get_usage

Return the credit balance, per-operation totals, and recent ledger.

Inferred read-only
export_usage

Export ledger, hook, instance, lineage, outcome, profile, and retained-job data.

Inferred read-only
list_runs

Every call this account was charged for, newest first.

Inferred read-only
quote

Read archived generation price and wait metadata without spending.

Inferred read-only
add_credits

Compatibility credit grant (1-10000); beta customer operations are already free.

Inferred read-only
list_billing_events

Recent billing events (usage.recorded, credits.granted, credits.low).

Inferred read-only
create_checkout

Get a hosted-checkout link outside beta.

Inferred read-only
create_creator_profile

Create an owned, versioned creator profile.

Potential side effects
list_creator_profiles

List current creator-profile versions, newest changed first.

Inferred read-only
get_creator_profile

Get the current or one exact historical creator-profile version.

Inferred read-only
update_creator_profile

Append a full immutable profile version with compare-and-swap.

Inferred read-only
delete_creator_profile

Erase profile facts and consent history; retain a retraction marker.

Potential side effects
create_key

Mint a new named API key; the plaintext is returned ONCE.

Inferred read-only
list_keys

List this account's API keys as PREFIXES only (never the raw key).

Inferred read-only
revoke_key

Revoke the key with `prefix` (from list_keys): it stops working, others keep working.

Inferred read-only
delete_account

Permanently delete this account.

Potential side effects
research_hook_evidence

Return an unpadded portfolio selected deterministically from verified evidence.

Inferred read-only
synthesize_hooks

Write original hooks derived from verified viral source evidence.

Potential side effects
generate_hooks

Archived source-free writer.

Inferred read-only
generate_hooks_batch

Archived source-free batch writer.

Inferred read-only
score_hook

Score any hook text on 5 dimensions with rewrite tips.

Inferred read-only
score_hooks_batch

Score many hooks ranked with `best`, or compare named SETS.

Inferred read-only
remix_hook

Archived source-free remix writer.

Inferred read-only
list_hooks

List the hooks this account has bought, newest first.

Inferred read-only
get_hook

Fetch one bought hook in full, including its parsed score.

Inferred read-only
list_outcomes

List the posted outcomes THIS account has reported, newest first.

Inferred read-only
report_outcome

Report what a bought hook actually did once posted.

Inferred read-only
start_generate_job

Archived source-free writer job.

Inferred read-only
get_job

Poll an async job: status, real engine stage, progress, ETA, result/error.

Inferred read-only
wait_for_job

Block until a job is terminal, then return it.

Potential side effects
cancel_job

Cancel a job that is STILL QUEUED.

Inferred read-only
list_jobs

List this account's jobs, newest first (summaries without the result blob).

Inferred read-only
set_webhook

Register (or replace) this account's webhook; the secret is returned ONCE.

Inferred read-only
get_webhook

This account's webhook (url + last delivery status; never the secret).

Inferred read-only
delete_webhook

Remove this account's webhook (WP-M).

Potential side effects
list_webhook_deliveries

List this account's webhook deliveries, newest first.

Inferred read-only
redrive_webhook_delivery

Requeue a dead-lettered webhook delivery: reset to pending, due now.

Inferred read-only
get_activity

See what this account's agents are doing: in-flight ops + recent ops.

Inferred read-only

CONNECT WITH APPROVAL

Client installation

Review this server and its permissions before adding it. Secret placeholders must be set locally.

Codex

~/.codex/config.toml

[mcp_servers.vhgengine]
url = "https://hookdetector.com/mcp"
enabled = true
Claude Code

.mcp.json

{
  "mcpServers": {
    "vhgengine": {
      "type": "http",
      "url": "https://hookdetector.com/mcp"
    }
  }
}
Claude Desktop

Settings → Connectors → Add custom connector

Name: vhgengine
Remote MCP URL: https://hookdetector.com/mcp

Add this remote URL as a custom connector in Claude Desktop. Availability depends on the user plan and workspace policy.

Cursor

.cursor/mcp.json

{
  "mcpServers": {
    "vhgengine": {
      "url": "https://hookdetector.com/mcp"
    }
  }
}
Visual Studio Code

.vscode/mcp.json

Add to Visual Studio Code
{
  "servers": {
    "vhgengine": {
      "type": "http",
      "url": "https://hookdetector.com/mcp"
    }
  }
}
Generic MCP

Client-specific MCP configuration

{
  "name": "vhgengine",
  "transport": "streamable-http",
  "url": "https://hookdetector.com/mcp"
}
MCP Inspector

Run the official MCP Inspector locally and enter the indexed Streamable HTTP endpoint.

ENDPOINT 2

https://api.hookdetector.com/mcp

No auth detected

MCP server metadata

Name
hookdetector
Capabilities
experimentalpromptsresourcestools
Server instructions

Find short-form hooks that already work. Call create_account once to get an api_key, then send it as the header 'Authorization: Bearer hd_...' or pass it as the api_key argument. find_hooks starts a run that takes about 2 to 3 minutes; then call get_run with wait_seconds=50 until status is done or failed (usually 3 or 4 calls). Pass an idempotency_key to find_hooks so a retry never starts a second run. export_run turns a finished run into CSV, JSON or Markdown. Every error's whole text is JSON {"error": {"code": <HTTP status>, "message", "error_code"}}, plus "errors" with each field's loc on a 422; branch on error_code. A key holds some of four permissions (read, write, research, admin); a call it lacks is 403 insufficient_scope. Full guide: GET /llms.txt; the whole manual as one file: GET /docs.md.

Known tools 19

create_account

Create an account and get an API key with free credits.

Potential side effects
find_hooks

Start hook research on a topic across TikTok and Instagram.

Inferred read-only
get_run

A research run: its status, progress, charge and every hook it produced.

Potential side effects
list_runs

Your research runs, newest first, without their hooks, limit 1 to 100 (default 20) per page.

Inferred read-only
export_run

A finished run's hooks as a file a creator can open: format "csv" (default; one row per hook, opens in any spreadsheet, formula-like cells defused with a leading quote), "json" (the full hook objects) or "md" (Markdown notes, one section per hook).

Inferred read-only
get_hook

One hook with every field: its opening line, transcript, watch_url and the vertical player_url (null for a photo post).

Potential side effects
embed_hook

Official TikTok or Instagram embed HTML for a hook, so the clip plays inside your own page.

Inferred read-only
keep_hook

Keep or reject a hook: verdict is "keep" (default) or "reject", and the last verdict wins.

Inferred read-only
clear_decision

Undo keep_hook: the hook goes back to having no verdict, so it leaves list_keeps and its export row carries none.

Inferred read-only
list_keeps

The hooks you kept with keep_hook, newest decision first, across all runs or within one run_id, limit 1 to 100 (default 100) per page.

Inferred read-only
balance

Your account and remaining credits right now: account_id, credits, key_prefix and key_id of the key making this call, label, created_at, and that key's scopes, credit_limit and expires_at.

Inferred read-only
delete_account

Erase your account and everything in it, for good: every API key, run, hook, keep or reject decision, conversation and message.

Potential side effects
chat

One conversational turn, for an agent relaying a person's words.

Inferred read-only
list_conversations

Your chat conversations, most recently active first, limit 1 to 100 (default 30) per page: conversation_id, title, created_at, updated_at and messages (the count).

Inferred read-only
get_conversation

One chat conversation: every message in order (role, content, run_id, created_at) and every run it holds, with their hooks.

Potential side effects
usage

Your credits and what you have spent: credits (balance now), spent_total, reserved_now (credits held by runs still in flight, refunded in part when they finish), runs_total, last_30_days (one entry per UTC day: date, runs, charged) and recent (your 20 newest runs).

Inferred read-only
list_keys

Your API keys and what each may do.

Inferred read-only
create_key

Create another API key on your account, for example one per agent or machine, so you can revoke one without touching the others.

Potential side effects
revoke_key

Revoke one of your API keys at once: key_id from list_keys, or "original" for the signup key.

Inferred read-only

CONNECT WITH APPROVAL

Client installation

Review this server and its permissions before adding it. Secret placeholders must be set locally.

Codex

~/.codex/config.toml

[mcp_servers.hookdetector]
url = "https://api.hookdetector.com/mcp"
enabled = true
Claude Code

.mcp.json

{
  "mcpServers": {
    "hookdetector": {
      "type": "http",
      "url": "https://api.hookdetector.com/mcp"
    }
  }
}
Claude Desktop

Settings → Connectors → Add custom connector

Name: hookdetector
Remote MCP URL: https://api.hookdetector.com/mcp

Add this remote URL as a custom connector in Claude Desktop. Availability depends on the user plan and workspace policy.

Cursor

.cursor/mcp.json

{
  "mcpServers": {
    "hookdetector": {
      "url": "https://api.hookdetector.com/mcp"
    }
  }
}
Visual Studio Code

.vscode/mcp.json

Add to Visual Studio Code
{
  "servers": {
    "hookdetector": {
      "type": "http",
      "url": "https://api.hookdetector.com/mcp"
    }
  }
}
Generic MCP

Client-specific MCP configuration

{
  "name": "hookdetector",
  "transport": "streamable-http",
  "url": "https://api.hookdetector.com/mcp"
}
MCP Inspector

Run the official MCP Inspector locally and enter the indexed Streamable HTTP endpoint.

TRUST AND VERIFICATION EVIDENCE

Loading Trust v2 evidence…

Checking the associated registrable domain. The BuiltWith key remains server-side.

Indexed

Evidence is source-attributed and does not guarantee that a third-party server is safe. Risk labels are conservative metadata heuristics.