hooklayer
Server Details
Viral-content intelligence for AI agents — 7 read-only MCP tools, evidence-layer scoring.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- khan-ashifur/hooklayer
- GitHub Stars
- 0
- Server Listing
- hooklayer
Available Tools
12 toolsanalyze_accountAIdempotentInspect
Analyze a TikTok, YouTube, or Instagram creator by handle or channel ID. Returns viral DNA scores (viral_dna_score, replicability_score, originality_score, consistency_score, audience_fatigue), content patterns, format fingerprint, top recent videos with transcripts, content gaps, a headline_insight object (the single largest quantified performance gap across length, hook, format, and cadence, plus its so_what), and suggested next research steps. Use when the user asks to analyze a creator, account, channel, or competitor. Supports TikTok (full transcript extraction), YouTube (Shorts and longform analysis with captions when available), and Instagram (Reels with best-effort transcripts).
| Name | Required | Description | Default |
|---|---|---|---|
| since | No | Optional ISO date (e.g. "2026-04-01"). Filter the candidate video pool to those posted on/after this date. Useful when the user asks "show me what they've done THIS month" — the route returns honest empty + warning when the filter matches 0, no credits charged. Use either `since` or `window`, not both. | |
| handle | Yes | Creator handle (with or without @ prefix) or YouTube channel ID. Examples: "@mrbeast", "mrbeast", "UCX6OQ3DkcsbYNE6H8uQQuVA". | |
| window | No | Recency sugar — same effect as `since` but takes a friendlier bucket. Maps to a since-cutoff at request time. Use either `since` or `window`, not both. | |
| platform | No | Platform to analyze. "tiktok" (default) returns full pipeline with transcripts. "youtube" analyzes recent Shorts via YouTube Data API + Innertube caption extraction — videos with captions disabled or geoblocked resolve to transcript: null. "instagram" (shipped 2026-07-06) fetches the creator's reels via ScrapeCreators Instagram API + best-effort reel transcripts on the top 5 — Instagram data lacks lifetime totalLikes so that field defaults to 0. | |
| recent_only | No | When true, hard-cap the candidate pool to videos posted in the last 90 days. Stricter than `window=90d` because it never falls through to archival data on a thin recent corpus. |
Output Schema
| Name | Required | Description |
|---|---|---|
| profile | No | Creator profile (handle, bio, followers, following, total_likes, total_videos) |
| from_payg | No | Whether credits came from pay-as-you-go balance |
| steal_map | No | Actionable elements to replicate from this creator |
| viral_dna | No | Five viral DNA scores (0-100 each) |
| content_gaps | No | Untapped content opportunities the creator is missing |
| recent_videos | No | Top recent videos with view counts, transcripts, and engagement |
| headline_insight | No | The largest quantified performance gap for this creator, plus its implication. Presentation-neutral data — the caller decides whether and how to surface it. |
| pattern_analysis | No | Content pattern breakdown (posting cadence, topic clusters) |
| credits_remaining | No | Credits remaining after this call |
| from_subscription | No | Whether credits came from subscription |
| recommended_chain | No | Suggested next tool calls with pre-filled parameters — advisory only, agent decides whether to execute |
| format_fingerprint | No | Dominant content format patterns (durations, styles, edit types) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (idempotent, non-destructive), the description discloses several important behavioral traits: the "honest empty + warning" behavior for zero-matching filters, "no credits charged" on that path, "transcript: null" when captions are disabled/geoblocked, and Instagram's "lifetime totalLikes defaults to 0." This level of edge-case disclosure goes well beyond what annotations provide and helps the agent set accurate user expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is information-dense but well organized: action first, outputs second, usage trigger third, platform-specific behavior last. Every sentence contributes unique value, including the credit-charge warning and platform caveats. Despite its length, it is front-loaded and easy to scan, and the complexity of the tool justifies the length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core action, all supported platforms and their transcript availability, key output fields, usage context, and important edge cases (empty results, credit charges, platform data limitations). An output schema exists, so return values don't need to be re-explained. Nothing essential for selecting or invoking this tool is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter (handle, since, window, platform, recent_only) already thoroughly documented in the schema. The description adds high-level context—like platform transcript expectations and the since vs. window exclusivity—but for the most part it does not need to explain parameters because the schema already carries that burden. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: "Analyze a TikTok, YouTube, or Instagram creator by handle or channel ID." It then enumerates a distinctive set of outputs (viral DNA scores, content patterns, headline_insight, etc.) that clearly separates this from sibling tools like watch_account or predict_virality. An agent can confidently identify what this tool does from the first sentence alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use it: "Use when the user asks to analyze a creator, account, channel, or competitor." This is clear and actionable. However, it does not mention when not to use it or point to an alternative sibling (e.g., watch_account for ongoing monitoring), so it stops short of the full when/when-not/alternatives guidance required for a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
brief_to_blueprintAInspect
Turn a brand brief that just landed into a one-page creative blueprint the manager can forward to the creator and to the brand contact — hook + template + hashtag combo + trend-velocity check + shoot instructions, in one call. Use when a brand sends a product and needs content on a tight turnaround (e.g. "product arrived, need content in 48 hours") and the manager needs a defensible direction with no research time. Chains find_viral_template + trend_pulse + score_hook + predict_virality upstream but exposes them as one MCP tool so agents don't stitch them manually. Cost 7 credits (bundle discount vs firing the chain manually). Returns a blueprint object with verdict (GO | NEEDS_MORE_DATA | NO_GO) and verdict_reason, a hook (text + trend_still_alive: up-slope | plateau | fading | unknown), script, hashtags, shoot notes, risk flags, and manager talking points, plus a quality object (level + reason) describing completeness; when quality.level is not "full", or verdict is NEEDS_MORE_DATA or NO_GO, the blueprint is a starting point rather than a shippable direction.
| Name | Required | Description | Default |
|---|---|---|---|
| niche | Yes | One of the 17 supported niches. Loose names like "beauty" or "fitness" are auto-mapped. | |
| region | No | Optional 2-letter ISO country code (US, GB, CA, etc.). Threads to niche + trend upstreams. | |
| product | Yes | What the brand sent (name + one line, e.g. "Athletic Greens AG1 travel packs — 30-count individual sachets for travel") | |
| platform | No | Target platform. Both TikTok and Instagram Reels supported (shipped 2026-07-06). When set to "instagram", the product-corpus lookup runs against Instagram Reels via ScrapeCreators, and the creator context (if creator_handle passed) fetches Instagram reels. Default: tiktok. | |
| creator_handle | No | Optional creator handle (with or without @). If provided, the blueprint hook and script match THEIR voice patterns from recent videos. Highly recommended — a blueprint without creator context is generic. | |
| deadline_hours | No | How many hours until the video must be posted. Default 48. Affects trend-still-alive scoring — a 24-hour deadline needs a trend on the up-slope, not one that just plateaued. | |
| product_category | Yes | Umbrella category (e.g. "greens powder", "sunscreen", "protein bar") |
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | No | |
| stats | No | |
| applied | No | Echo of parameters resolved after canonicalization |
| quality | No | |
| success | No | |
| blueprint | No | |
| provenance | No | |
| credits_remaining | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses important operational behavior: it chains multiple upstream tools, costs 7 credits with a bundle discount, and returns a quality object that tells the agent whether the result is shippable or only a starting point. This gives the agent useful expectations about side effects, cost, and reliability without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every clause earns its place: use case, deliverable composition, chained workflow, cost, output shape, and quality caveat are all present. The most important information is front-loaded, and the output semantics are delivered as a structured, skimmable summary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 7 parameters, rich schema descriptions, an output schema, and a complex composite workflow, the description still covers the core deliverables, the return object, and how to interpret partial or non-GO results. It provides enough context for an agent to invoke the tool correctly and know what to do with the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the parameter descriptions already explain each field, including defaults, enums, and behavioral effects like deadline_hours affecting trend-still-alive scoring. The main description does not add much new parameter-level meaning beyond naming product and niche context, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource — turning a brand brief into a one-page creative blueprint — and enumerates the exact components of that blueprint (hook, template, hashtag combo, trend-velocity check, shoot instructions). It also distinguishes itself from the sibling chain tools by explaining that it bundles find_viral_template, trend_pulse, score_hook, and predict_virality into a single MCP tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a concrete triggering scenario: a brand sends a product and needs content on a tight turnaround with little research time. It also clarifies the alternative — stitching the upstream tools manually — and why this tool exists instead, making the when-and-why decision explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_viral_templateAIdempotentInspect
Find proven viral templates in a niche with example videos. Returns templates ranked by performance, including hook patterns, format structures, average views, and example URLs. Use when the user asks what's working in a niche or wants concrete copyable structures. Supports 17 niches with optional angle narrowing via query parameter for more specific results (e.g., "postpartum strength" within Fitness).
| Name | Required | Description | Default |
|---|---|---|---|
| niche | Yes | One of the 17 supported niches. Loose names like "travel" or "fitness" are accepted but pass the canonical form when possible. | |
| query | No | Optional angle narrowing within the niche. E.g. niche="Fitness & Health" + query="postpartum strength" returns only postpartum-strength templates, not generic gym. Templates are scored by query-token match against title+description+hashtags; zero-match templates are dropped. Leave empty for niche-wide top templates. | |
| region | No | Optional 2-letter ISO country code (US, GB, BR, JP, IN, PH, etc.). Threads to YouTube Search regionCode + TikTok niche query. Reddit niche signals are global and ignore this param. Pass when the user wants templates that resonate with a specific local audience. | |
| window | No | Recency filter. Drops example videos older than the window. Note: TikTok hashtag-corpus rows often lack timestamps and are excluded when window is set — surfaces as a quality warning so callers can decide whether to broaden. | |
| platform | No | Platform to source templates from. "tiktok" (default) uses the full niche-aggregator (YouTube + Reddit + TikTok hashtags). "instagram" (2026-07-06) is keyword-search-only — the Instagram niche-aggregator isn't plumbed yet, so `query` becomes REQUIRED on IG. Output rubric_version signals which path ran: find_viral_template.v1 (main), .v2-keyword-fallback (TikTok fallback), .v3-instagram-keyword-only (IG-only path). | |
| min_views | No | Optional filter — only return examples above this view count |
Output Schema
| Name | Required | Description |
|---|---|---|
| niche | No | The niche searched |
| from_payg | No | Whether credits came from pay-as-you-go balance |
| templates | No | Ranked viral templates with hook patterns and example URLs |
| credits_remaining | No | Credits remaining after this call |
| from_subscription | No | Whether credits came from subscription |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true and destructiveHint=false, and the description adds that results are ranked by performance. However, operational behaviors like platform fallback paths (rubric_version) and the timestamp exclusion on TikTok rows live only in the parameter descriptions, not the main description. This keeps transparency at the baseline.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences with the core action front-loaded. There is minor redundancy between 'example videos' in the first sentence and 'example URLs' in the second, but the length is appropriate and the 'Use when' cue is placed early enough to be useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The full definition benefits from an output schema and exhaustive parameter descriptions, so an agent has the details needed to call this correctly. The description itself slightly under-serves by miscounting the niche enum (17 vs 18) and omitting the Instagram-specific requirement that query becomes mandatory, though this is documented in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema carries full parameter semantics. The description's example of angle narrowing ('postpartum strength' within Fitness) mirrors the query parameter's own description and adds no new information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Find proven viral templates in a niche with example videos.' It promptly enumerates the concrete outputs (hook patterns, format structures, average views, example URLs), which distinguishes it from sibling tools like search_videos or predict_virality. The only blemish is stating 17 niches while the schema enum lists 18, but this does not obscure the tool's purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use when the user asks what's working in a niche or wants concrete copyable structures' gives clear, actionable context for when to invoke the tool. It stops short of naming specific alternatives or stating when not to use it, so it misses the top score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_changesAInspect
Detect what changed since the last saved baseline for a tracked creator. Runs a fresh analyze_account under the hood, compares against the most recent CreatorSnapshot, persists the new snapshot, and returns ONLY the meaningful shifts (format, viral DNA, engagement, hook pattern, topic pillars, outlier videos). Use when the user asks 'what changed with @creator', 'anything new', 'check this competitor again', 'what's different since last time', 'check my tracked creator', or 'has anything changed'. Requires a previously tracked creator (call analyze_account + watch_account first if there is no baseline yet). Costs 5 credits per call because the fresh analysis is genuine (not cached). Returns a top_action pointing at the single next tool worth calling given the detected change. Returns status='no_meaningful_change' honestly when nothing shifted — no fabricated deltas.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | No | Creator handle (with or without @). Required if watch_id is not provided. | |
| platform | No | Platform the tracked creator publishes on. Required if watch_id is not provided. | |
| watch_id | No | Watch identifier returned by watch_account or list_watches. Preferred over (platform, handle) when you have it — the ownership check is exact. |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | No | changes_found = meaningful shifts detected; no_meaningful_change = fresh analysis ran, nothing shifted enough to matter; baseline_refreshed = prior snapshot used an incompatible schema, new baseline saved; not_tracked = no active CreatorWatch for that creator; no_baseline = watch exists but has no snapshots yet. |
| changes | No | |
| creator | No | |
| platform | No | |
| top_action | No | Single most useful next tool call given the detected changes. null when nothing meaningful shifted. |
| snapshot_count | No | Total snapshots saved for this watch after this call. |
| credits_charged | No | |
| high_importance | No | |
| medium_importance | No | |
| meaningful_changes | No | Count of high + medium importance changes. |
| current_snapshot_at | No | |
| previous_snapshot_at | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes far beyond the annotations: it discloses that the tool runs a fresh (non-cached) analysis costing 5 credits, persists the new snapshot (mutation), returns only meaningful shifts, honestly returns status='no_meaningful_change' when nothing shifted, and returns a top_action pointing to the next tool. This paints a complete behavioral picture and aligns with the annotations (readOnly=false, idempotent=false), adding cost and state-change context the annotations don't convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is longer than average but every sentence earns its place: purpose, mechanism, trigger phrases, prerequisite, cost, return behavior, and honesty note. It's front-loaded with the core purpose and mechanism, and while it could be tightened slightly, the density of useful information keeps it from feeling bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (it runs an analysis, persists state, and returns a rich result including a top_action), the description covers all decision-relevant information: trigger phrases, prerequisites, cost, return semantics (meaningful shifts vs. no_meaningful_change), and the existence of a top_action. The output schema defines the exact return structure, so the description doesn't need to list fields. Nothing an agent needs to decide whether and how to call it is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents all three parameters at 100% coverage, so the description doesn't need to re-explain them. However, it adds one valuable piece of guidance: that watch_id is preferred over (platform, handle) because the ownership check is exact. This is extra semantics that helps the agent pick the right parameter, justifying a score above the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise verb-resource pair ('Detect what changed since the last saved baseline for a tracked creator') and immediately differentiates it from siblings: it runs a fresh analyze_account under the hood, compares against a CreatorSnapshot, and returns only meaningful shifts. It even names the specific change categories (format, viral DNA, etc.), making the tool's purpose unmistakable and clearly distinct from analyze_account or watch_account.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly lists trigger phrases ('what changed with @creator', 'anything new', 'check this competitor again') and states the prerequisite (a previously tracked creator, with a callout to call analyze_account + watch_account first if no baseline exists). This tells the agent exactly when to use the tool and what precondition must be met, which is strong usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_watchesARead-onlyIdempotentInspect
List every creator the authenticated user is tracking. Read-only, 0 credits. Returns each watch's id, platform, handle, when it was created + last updated, when the last snapshot was taken, and whether it's active. Does NOT return the snapshot payload itself — call watch_account (idempotent) to refresh a baseline. Use when the user asks 'what am I tracking', 'show my watches', 'list creators'.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| total | No | |
| watches | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnly, idempotent), the description reveals response fields, first-class exclusions (snapshot payload), the associated cost (0 credits), and a fallback action (watch_account). Complements annotations without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence adds critical information: purpose, safety/cost note, return fields, exclusions, and usage triggers. Front-loaded with the main action and scoped concisely for a list operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only tool, the description covers behavior, response contents, and exclusions comprehensively. An output schema exists to handle return structure, so nothing is left ambiguous.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters make the schema trivially complete (100% coverage). The description adds no parameter-level details because none are needed; baseline of 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (list), resource (creators tracked), and scope (authenticated user's), clearly distinguishing it from siblings like watch_account. The description also notes what it does NOT do (no snapshot payload) and references the sibling, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides trigger phrases and use cases ('what am I tracking', 'show my watches', 'list creators') and tells when to use the alternative tool (refresh baseline via watch_account). Covers both when and when-not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
match_voiceAInspect
Extract a creator's voice DNA from reference samples and rewrite a draft in their style. Requires at least 3 reference samples (video URLs or text). Returns voice profile (energy, humor, vocabulary, signature phrases), reusable prompt instructions, and the rewritten draft. Use when the user wants to write in another creator's style or match a specific voice.
| Name | Required | Description | Default |
|---|---|---|---|
| draft | Yes | The text to rewrite | |
| reference_samples | Yes | At least 3 reference samples — TikTok/YouTube/Instagram URLs or raw text |
Output Schema
| Name | Required | Description |
|---|---|---|
| from_payg | No | Whether credits came from pay-as-you-go balance |
| voice_profile | No | Extracted voice DNA profile |
| rewritten_draft | No | The input draft rewritten in the matched voice |
| credits_remaining | No | Credits remaining after this call |
| from_subscription | No | Whether credits came from subscription |
| prompt_instructions | No | Reusable prompt to replicate this voice |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are minimal (readOnlyHint=false, no value for destructive or idempotent), and the description adds key behavioral constraints: a minimum of 3 reference samples and the fact that it returns a voice profile, reusable prompts, and the rewritten draft. It doesn't explain side effects or permissions, but the operation is a text transformation, so details are sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no wandering. It front-loads the core purpose, then quickly lists requirements and output. Every clause adds information; no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a moderately complex tool (two inputs, output schema present), the description covers the goal, the required inputs, the output structure, and the typical use-case. With an output schema provided, the description doesn't need to explain the return values, and it still manages to state what the result includes. Nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the description adds no extra meaning beyond what the schema provides (minItems on reference_samples, descriptions of draft and reference_samples). It touches on the requirement of 'at least 3 reference samples' but that's already encoded. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: extract a creator's voice DNA and rewrite a draft in their style. It provides a specific verb+resource and so distinct outcome that it will be useful to an agent. While it doesn't explicitly name alternatives or siblings, its specificity (voice DNA, style matching) distinguishes it from casual rewriting tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'Use when the user wants to write in another creator's style or match a specific voice' gives clear direction. However, it doesn't mention when not to use it or point to an alternative (e.g., viral_remix or analyze_account), so it offers a clear context but no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
predict_viralityAIdempotentInspect
Score a draft script for viral potential with adversarial verification. Returns a virality score, recommendation (ship/rework/no-go), viral DNA breakdown with evidence, attack vectors analysis, and calibration metrics. Use when the user has a finished draft and wants pre-publish verification. Pass either a script string or a video URL.
| Name | Required | Description | Default |
|---|---|---|---|
| niche | No | Niche context | |
| script | Yes | The draft script to predict on (or a video URL — auto-extracts transcript) |
Output Schema
| Name | Required | Description |
|---|---|---|
| blueprint | No | Retention diagnosis with weak seconds identified |
| from_payg | No | Whether credits came from pay-as-you-go balance |
| viral_dna | No | Hook type, structure, emotional triggers breakdown |
| share_reason | No | Why viewers would share this content |
| target_emotion | No | Primary emotion the content targets |
| virality_score | No | Overall virality prediction (0-100) |
| credits_remaining | No | Credits remaining after this call |
| from_subscription | No | Whether credits came from subscription |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide idempotentHint=true and destructiveHint=false, covering safety. The description adds behavioral context: 'adversarial verification' implies a rigorous analysis, and the list of outputs (attack vectors, calibration metrics) gives insight into the tool's processing. It also notes video URL auto-transcription, an external-access behavior, which is not in annotations. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with zero fluff. The first sentence states the action and outputs; the second gives usage condition and input options. The critical information is front-loaded, and every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a complex tool with multiple output components, but the description enumerates all of them. It clarifies the input alternatives (script or URL) and the intended usage scenario. Given that an output schema exists, the description does not need to explain return values, and it covers the essential aspects an agent needs to invoke it correctly, distinguishing it from sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters. The description adds that the script should be a 'finished draft' for pre-publish verification, which is useful context, but it largely repeats the schema's note about accepting a video URL. No significant new meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('score') and a specific resource ('a draft script'), and lists unique outputs (virality score, recommendation, viral DNA breakdown, attack vectors, calibration metrics) that distinguish it from siblings like score_hook and find_viral_template. The phrase 'adversarial verification' further differentiates its approach.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear usage context: 'Use when the user has a finished draft and wants pre-publish verification.' It also specifies input format ('Pass either a script string or a video URL'). However, it does not explicitly mention when not to use it or alternatives, though siblings exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
score_hookAIdempotentInspect
Score a TikTok, Reels, or Shorts hook against proven viral patterns. Returns a 0-100 score, percentile rank, matched pattern, strengths, weaknesses, and three improved hook variations. Use when the user has a draft hook to validate, wants to compare alternatives, or needs feedback before publishing.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The hook to score (3-200 chars typical) | |
| niche | No | Optional niche context (e.g. "Beauty & Skincare", "Finance & Business") | |
| platform | Yes | Target platform — affects pattern matching |
Output Schema
| Name | Required | Description |
|---|---|---|
| why | No | One-sentence verdict explaining the score |
| score | No | Hook quality score (0-100) |
| rewrites | No | Three rewritten versions at higher quality |
| breakdown | No | Sub-scores (0-100) for five quality dimensions |
| from_payg | No | Whether credits came from pay-as-you-go balance |
| strengths | No | What the hook does well |
| percentile | No | Percentile rank vs all scored hooks |
| weaknesses | No | What could be improved |
| pattern_match | No | Matched viral pattern name |
| credits_remaining | No | Credits remaining after this call |
| from_subscription | No | Whether credits came from subscription |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover idempotency and non-destructiveness, so the description's job is lighter. It adds useful context about what the tool returns and that platform affects pattern matching, but it does not clarify whether any state changes occur or how much input content is processed. This is acceptable given the annotations, but still not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, with a clear first sentence of what the tool does, followed by the result components and the explicit usage cases. Every sentence earns its place without redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple parameter count, full schema coverage, available annotations, and presence of an output schema, the description is complete enough for an agent to invoke this tool correctly. It covers the target content, the decision, and the expected output categories.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents `text`, `niche`, and `platform`. The description adds no per-parameter semantics beyond a minor mention that the platform affects pattern matching, which is already implied in the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Score') and identifies the exact resource ('a TikTok, Reels, or Shorts hook') plus the method ('against proven viral patterns'). It clearly distinguishes this from sibling tools by focusing specifically on hooks and their improved variations, rather than broader virality prediction or account analysis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool: 'Use when the user has a draft hook to validate, wants to compare alternatives, or needs feedback before publishing.' It provides clear invocation context but does not name alternative tools or include explicit when-not-to-use guidance, keeping it one step below full differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_videosAIdempotentInspect
Search for short-form videos by keyword across TikTok or Instagram. Returns up to 20 videos ranked by engagement, with view counts, likes, shares, comments, hashtags, author info, and URLs. Use when the user asks to find videos about a topic or keyword. Supports optional filters for niche, minimum views, recency window, and region.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max videos to return after filtering. Default 12, max 20. | |
| niche | No | Optional — only return videos whose description contains niche-related tokens. Loose niche strings work ("fitness", "Beauty & Skincare"). | |
| query | Yes | Free-text search term. Examples: "morning routine", "iphone case", "passive income". | |
| region | No | ISO country code (US, GB, BR, PH, JP, etc.). Note: corpus coverage varies by region — small regions may return zero results and a degraded quality flag. | |
| window | No | Recency filter. Maps to the closest ScrapeCreators date bucket AND applies a client-side cutoff for defense-in-depth. | |
| platform | No | Which platform to search. "tiktok" (default) hits ScrapeCreators TikTok keyword search. "instagram" (2026-07-06) hits Instagram Reels search — note IG upstream ignores region/date_posted params, so region enforcement is client-side only (region_verified_count in the response tells you how many results verifiably matched). | |
| min_views | No | Optional view-count floor. Default 0. |
Output Schema
| Name | Required | Description |
|---|---|---|
| videos | No | |
| applied | No | Echo of the filters actually applied — useful for debugging when results look surprising |
| quality | No | |
| from_payg | No | |
| filtered_count | No | Videos returned after filtering + cap |
| upstream_count | No | Videos returned by upstream before any filtering |
| credits_remaining | No | Credits remaining after this call |
| from_subscription | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context: it mentions the 'degraded quality flag' for small regions, the client-side cutoff for window, and the platform-specific note that Instagram ignores region/date_posted params. This goes beyond annotations and helps the agent understand edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with the core purpose front-loaded and filters summarized in one sentence. It's efficient and doesn't waste words. A slight deduction because it could be slightly more structured (e.g., bullet points for filters), but it's still well-organized and readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (7 params, 2 enums, platform-specific behavior), the description covers the key points: what it returns, when to use it, and the main edge cases (region coverage, platform differences). The output schema exists, so return values are covered. It doesn't mention pagination or rate limits, but those are minor for a search tool. A 4 is fair.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters well. The description adds value by summarizing the optional filters (niche, minimum views, recency window, region) and by noting the 'degraded quality flag' for regions, which is not in the schema. It doesn't repeat schema details but adds a layer of context, so a 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Search'), a resource ('short-form videos'), and the platforms ('TikTok or Instagram'). It clearly distinguishes from siblings like 'find_viral_template' or 'trend_pulse' by focusing on keyword search for videos. The scope and output are explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use when the user asks to find videos about a topic or keyword,' which provides clear context. It doesn't explicitly name alternatives or when-not-to-use, but the sibling list and the specific phrasing make the usage context clear enough. A small deduction for not naming alternatives explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trend_pulseAIdempotentInspect
Research what is currently gaining traction in short-form content for a specific niche. Returns rising opportunities (formats, hooks, styles, topics) with growth signals, data sources, and saturated patterns to avoid. Use when the user asks what to post about, what's trending in a niche, or needs to validate a content idea against current trends. Supports 17 niches and optional region filtering.
| Name | Required | Description | Default |
|---|---|---|---|
| niche | No | One of the 17 supported niches. Loose names like "travel" or "fitness" are accepted but pass the canonical form when possible. Omit for broadly applicable trends. | |
| region | No | Optional 2-letter ISO country code (US, GB, BR, JP, IN, PH, etc.). Threads to Google Trends geo + YouTube regionCode. Defaults to US when omitted. Reddit signals are global and ignore this param. | |
| deadline_hours | No | Optional (2026-07-06 magic-genie ritual): how many hours until the video posts. When set, each rising trend gets a trend_status (up-slope | plateau | fading | unknown) AND a deadline_verdict (safe | risky | no-go) so managers can answer "will this trend still be alive when the video posts?" without eyeballing the growth label. Use this on every brief-just-landed call — it turns trend_pulse from "what's trending" into "what's SAFE to bet on for MY post window." |
Output Schema
| Name | Required | Description |
|---|---|---|
| niche | No | The niche these trends apply to |
| rising | No | Rising opportunities (format/hook/style) with qualitative growth labels + signal_strength numeric anchor (0-1) + suggestions |
| from_payg | No | Whether credits came from pay-as-you-go balance |
| saturated | No | Saturated patterns to avoid |
| credits_remaining | No | Credits remaining after this call |
| from_subscription | No | Whether credits came from subscription |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations providing the safety profile (idempotent, non-destructive, open-world), the description adds value by disclosing what the tool returns — growth signals, data sources, saturated patterns to avoid — and the deadline_hours param goes deep on derived fields (trend_status, deadline_verdict) and their semantics. No annotation contradiction: 'Research... Returns' is consistent with idempotentHint (same call yields stable trends data within a window) and openWorldHint (trending data shifts with the world). It stops short of full transparency — no mention of rate limits, pagination, latency of data freshness — but for a query-style tool with an output schema, the coverage is solid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-architected: first sentence nails the core operation, second describes the return shape, third gives explicit invocation triggers, and the fourth scopes it. Every sentence earns its place, and the most important information is front-loaded. The main deduction is that the schema's deadline_hours description carries a verbose, almost narrative 'magic-genie ritual' framing that may confuse an agent; while not part of the main description text, it inflates the tool definition's overall signal-to-noise ratio.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 3 optional parameters, an output schema, and no nested objects, the definition is complete — it explains the domain (short-form trend research), what's returned, when to call it, and the parameter semantics are fully self-documenting. The description meaningfully complements the schema by answering the 'how would an agent use this in practice' question. Gaps are minor: no mention of data-source-specific latency, and the niches/region feature-count is slightly inaccurate (18 vs 17 listed).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the rubric's baseline of 3 applies — and the schema carries the full weight here. The description does echo the two key knobs ('Supports 17 niches and optional region filtering'), but adds no semantic layer beyond what the parameter descriptions already state (e.g., region maps to Google Trends geo + YouTube regionCode; Reddit ignores region). It also perpetuates the '17 niches' inaccuracy instead of resolving it. The description is a competent summary, not an addition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb-resource-scope statement: 'Research what is currently gaining traction in short-form content for a specific niche' — clear and unambiguous. It then reinforces the purpose with concrete return types (formats, hooks, styles, topics) and saturated patterns to avoid. It loses the fifth point because it never names any sibling (e.g., find_viral_template, predict_virality) to explicitly disambiguate where its scope ends, so the differentiation is implied rather than explicit. One small blemish: it claims '17 niches' while the enum defines 18.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit trigger conditions — 'Use when the user asks what to post about, what's trending in a niche, or needs to validate a content idea against current trends' — which is exactly the right kind of when-to-use signal. The deadline_hours parameter adds behavioral guidance ('use this on every brief-just-landed call'), showing when to enrich the default call. It gets dinged because it never says when NOT to use it or names an alternative tool for adjacent intents like predicting performance (predict_virality) or finding templates (find_viral_template).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
viral_remixAInspect
Take a viral video and produce a fresh script that mirrors its structure and energy pattern for a new topic. Returns the extracted formula, scene-by-scene script with voiceover and visuals, camera directions, and text overlays. Use when the user finds a video they want to replicate the structure of. Pass either a video URL (TikTok, YouTube, or Instagram) or a transcript directly. When promoting a specific product, ALWAYS pass target_product + verified_product_facts so the generator does not fabricate product details.
| Name | Required | Description | Default |
|---|---|---|---|
| niche | No | Optional niche hint | |
| my_topic | No | DEPRECATED alias for target_topic. Legacy clients only. Normalized internally. | |
| platform | No | Target platform for the remix. Adjusts pacing and CTA style if provided. | |
| source_url | No | TikTok/YouTube/Instagram URL — transcript will be auto-extracted | |
| transcript | No | Pre-extracted transcript (alternative to source_url, faster) | |
| target_topic | No | What the remix should be about. Default: same niche as original. | |
| target_product | No | The product the remix should promote. When provided, the generator will NOT invent product names, prices, timelines, features, or customer stories. Combined with verified_product_facts, this forces on-topic + grounded output. | |
| verified_product_facts | No | Facts the generator is allowed to cite about target_product (e.g. "runs inside ChatGPT and Claude", "9 tools for viral research"). Every specific product claim in the generated script is checked against this list — unsupported claims populate unsupported_claims[] and downgrade quality. If target_product is passed WITHOUT verified_product_facts, the response will land at degraded quality (generation cannot be grounded). |
Output Schema
| Name | Required | Description |
|---|---|---|
| overlays | No | Text overlay suggestions per scene |
| from_payg | No | Whether credits came from pay-as-you-go balance |
| verify_hook | No | The hook plus a suggested follow-up: the caller may pass it to score_hook for a structurally-independent score (the script generator deliberately does NOT self-rate). Informational only, not an instruction to call anything. |
| camera_shots | No | Phone-native camera direction per scene |
| fresh_script | No | Complete scene-by-scene script mirroring the source structure |
| cta_archetype | No | Which CTA archetype the generator picked. Comment_gate is the failure-mode default for AI script generators; rotation tells you whether the prompt is working. |
| ugc_authenticity | No | Tripwire for ad-shaped drift. Detected via regex on the produced script, not the model self-grade. If level=ad_leaning, surface to the user before shipping. |
| credits_remaining | No | Credits remaining after this call |
| extracted_formula | No | The viral DNA formula extracted from the source |
| from_subscription | No | Whether credits came from subscription |
| structural_skeleton | No | Which structural skeleton the generator used (confession_to_result, mistake_to_correction, etc). Surfaces rotation across the fleet. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses meaningful behavioral details beyond annotations: it returns a structured script package, and it states that passing target_product + verified_product_facts prevents the generator from fabricating product details. Annotations already cover read-only/destructive/idempotent hints, and the description does not contradict them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences with no filler: purpose, output, usage trigger, and critical product-grounding rule. It is front-loaded and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich input schema, output schema, and annotations, the description covers the essential invocation decisions: what the tool does, what inputs are acceptable, and the mandatory product-facts pairing for grounded promotion. No critical information for selecting or calling the tool is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all eight parameters thoroughly. The description adds 'ALWAYS pass target_product + verified_product_facts' and 'Pass either a video URL or a transcript directly,' but these largely restate or emphasize schema semantics rather than introducing new parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Take a viral video and produce a fresh script that mirrors its structure and energy pattern for a new topic.' It also enumerates concrete outputs (formula, scene-by-scene script, voiceover, visuals, camera directions, text overlays), making the tool's function unmistakable and distinct from siblings like find_viral_template.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit trigger condition: 'Use when the user finds a video they want to replicate the structure of.' It also provides input-mode guidance (URL vs transcript) and a product-promotion rule. It does not explicitly state when not to use it or name alternative tools, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
watch_accountAIdempotentInspect
Start tracking a creator so future calls can detect what changed. Creates a durable CreatorWatch + a baseline CreatorSnapshot capturing the creator's current viral DNA scores, format fingerprint, and top recent videos. Use when the user says 'track', 'watch', 'follow', 'keep an eye on' a creator/channel/handle. Idempotent — calling 'watch @same' twice with a fresh baseline in place returns the existing watch with credits_charged=0. Costs 5 credits ONLY on the first call (fresh baseline via analyze_account); subsequent calls within the freshness window are free. Reuses the same 'analyze' permission as analyze_account — no new OAuth scope, no re-consent required.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | Yes | Creator handle (with or without @ prefix). Examples: "@mrbeast", "mrbeast". | |
| platform | Yes | Platform the creator publishes on. Same platforms as analyze_account. |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | No | |
| creator | No | Normalized "@handle" the watch is stored under |
| message | No | |
| platform | No | |
| watch_id | No | |
| data_age_days | No | Age in days of the newest video in the baseline |
| snapshot_count | No | Total snapshots stored for this watch so far |
| baseline_source | No | watch_snapshot = existing CreatorWatch already had a fresh snapshot (0 credits); analysis_cache = recent analyze_account response reused to build a new baseline (0 credits); fresh = analyze_account invoked, 5 credits charged. |
| credits_charged | No | |
| baseline_created_at | No | ISO timestamp of the baseline snapshot |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the idempotentHint and openWorldHint annotations, the description elaborates on side effects: it creates a watch, is idempotent (returns existing watch on repeat), costs 5 credits only on the first call, and reuses the 'analyze' permission without new OAuth scope. This provides rich behavioral detail not captured in annotations alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is informative but slightly redundant—idempotency and credit costs are mentioned in overlapping ways (e.g., 'returns the existing watch with credits_charged=0' and 'Costs 5 credits ONLY on the first call'). It's not overly long, but could be tightened without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's purpose, trigger phrases, side effects (credits, idempotency, permission reuse), and the parameters are fully explained in the schema. It does not need to describe the output schema per the guidelines. Overall, an agent has sufficient context to decide when and how to call this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (both handle and platform have descriptions), so the baseline is 3. The tool description does not add extra nuance about parameter formats or constraints beyond what the schema already provides, so no bonus.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Start tracking a creator') and the specific resource (a durable CreatorWatch and baseline snapshot), distinguishing it from siblings like analyze_account or get_changes. It also provides explicit trigger phrases ('track', 'watch', 'follow'), making the purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says 'Use when the user says track, watch, follow...' which gives clear, actionable guidance. It also implies the tool is for setting up monitoring for future change detection, which contrasts with tools like get_changes (retrieving changes) or list_watches (listing existing watches).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
3 tool updates
- Added
get_changes - Added
list_watches - Added
watch_account
1 tool update
- Changed
viral_remix5 fields changed- changed
Input schema / properties / my_topic / descriptionPrevious value: -"What the remix should be about. Default: same niche as original."New value: +"DEPRECATED alias for target_topic. Legacy clients only. Normalized internally." - added
Input schema / properties / platformAdded value: +{ + "description": "Target platform for the remix. Adjusts pacing and CTA style if provided.", + "enum": [ + "tiktok", + "reels", + "shorts" + ], + "type": "string" +} - added
Input schema / properties / target_productAdded value: +{ + "description": "The product the remix should promote. When provided, the generator will NOT invent product names, prices, timelines, features, or customer stories. Combined with verified_product_facts, this forces on-topic + grounded output.", + "type": "string" +} - added
Input schema / properties / target_topicAdded value: +{ + "description": "What the remix should be about. Default: same niche as original.", + "type": "string" +} - added
Input schema / properties / verified_product_factsAdded value: +{ + "description": "Facts the generator is allowed to cite about target_product (e.g. \"runs inside ChatGPT and Claude\", \"9 tools for viral research\"). Every specific product claim in the generated script is checked against this list — unsupported claims populate unsupported_claims[] and downgrade quality. If target_product is passed WITHOUT verified_product_facts, the response will land at degraded quality (generation cannot be grounded).", + "items": { + "type": "string" + }, + "type": "array" +}
2 tool updates
- Changed
analyze_account1 field changed- added
Output schema / properties / headline_insightAdded value: +{ + "description": "The largest quantified performance gap for this creator, plus its implication. Presentation-neutral data — the caller decides whether and how to surface it.", + "properties": { + "confidence": { + "description": "Confidence in the headline insight; lower on thin (<8 videos) or stale (>30 days) samples.", + "enum": [ + "high", + "medium", + "low" + ], + "type": "string" + }, + "so_what": { + "description": "The one concrete change the wow gap implies, stated in a single line.", + "type": "string" + }, + "wow": { + "description": "The single most material finding in the account's data: the dimension (video length, hook type, format, posting cadence, or topic) with the largest quantified performance gap, stated with two real numbers from the creator's videos. Not a restated score.", + "type": "string" + } + }, + "type": "object" +}
- Changed
viral_remix1 field changed- changed
Output schema / properties / verify_hook / descriptionPrevious value: -"Hook + instruction to chain into score_hook for a structurally-independent score (the script generator deliberately does NOT self-rate)"New value: +"The hook plus a suggested follow-up: the caller may pass it to score_hook for a structurally-independent score (the script generator deliberately does NOT self-rate). Informational only, not an instruction to call anything."
5 tool updates
- Changed
analyze_account2 fields changed- changed
Input schema / properties / platform / descriptionPrevious value: -"Platform to analyze. \"tiktok\" (default) returns full pipeline with transcripts. \"youtube\" analyzes the channel's recent Shorts via YouTube Data API + Innertube caption extraction (v1.1, 2026-06-10) — videos with captions disabled or geoblocked resolve to transcript: null and the response flags how many were extracted. Instagram ships in v1.2."New value: +"Platform to analyze. \"tiktok\" (default) returns full pipeline with transcripts. \"youtube\" analyzes recent Shorts via YouTube Data API + Innertube caption extraction — videos with captions disabled or geoblocked resolve to transcript: null. \"instagram\" (shipped 2026-07-06) fetches the creator's reels via ScrapeCreators Instagram API + best-effort reel transcripts on the top 5 — Instagram data lacks lifetime totalLikes so that field defaults to 0." - changed
Input schema / properties / platform / enumPrevious value: -[ - "tiktok", - "youtube" -]New value: +[ + "tiktok", + "youtube", + "instagram" +]
- Added
brief_to_blueprint - Changed
find_viral_template1 field changed- added
Input schema / properties / platformAdded value: +{ + "description": "Platform to source templates from. \"tiktok\" (default) uses the full niche-aggregator (YouTube + Reddit + TikTok hashtags). \"instagram\" (2026-07-06) is keyword-search-only — the Instagram niche-aggregator isn't plumbed yet, so `query` becomes REQUIRED on IG. Output rubric_version signals which path ran: find_viral_template.v1 (main), .v2-keyword-fallback (TikTok fallback), .v3-instagram-keyword-only (IG-only path).", + "enum": [ + "tiktok", + "instagram" + ], + "type": "string" +}
- Changed
search_videos1 field changed- added
Input schema / properties / platformAdded value: +{ + "description": "Which platform to search. \"tiktok\" (default) hits ScrapeCreators TikTok keyword search. \"instagram\" (2026-07-06) hits Instagram Reels search — note IG upstream ignores region/date_posted params, so region enforcement is client-side only (region_verified_count in the response tells you how many results verifiably matched).", + "enum": [ + "tiktok", + "instagram" + ], + "type": "string" +}
- Changed
trend_pulse1 field changed- added
Input schema / properties / deadline_hoursAdded value: +{ + "description": "Optional (2026-07-06 magic-genie ritual): how many hours until the video posts. When set, each rising trend gets a trend_status (up-slope | plateau | fading | unknown) AND a deadline_verdict (safe | risky | no-go) so managers can answer \"will this trend still be alive when the video posts?\" without eyeballing the growth label. Use this on every brief-just-landed call — it turns trend_pulse from \"what's trending\" into \"what's SAFE to bet on for MY post window.\"", + "maximum": 168, + "minimum": 1, + "type": "integer" +}
1 tool update
- Changed
find_viral_template1 field changed- added
Input schema / properties / queryAdded value: +{ + "description": "Optional angle narrowing within the niche. E.g. niche=\"Fitness & Health\" + query=\"postpartum strength\" returns only postpartum-strength templates, not generic gym. Templates are scored by query-token match against title+description+hashtags; zero-match templates are dropped. Leave empty for niche-wide top templates.", + "type": "string" +}
1 tool update
- Changed
viral_remix5 fields changed- added
Output schema / properties / cta_archetypeAdded value: +{ + "description": "Which CTA archetype the generator picked. Comment_gate is the failure-mode default for AI script generators; rotation tells you whether the prompt is working.", + "enum": [ + "result_close", + "soft_bio_pointer", + "genuine_question", + "pinned_comment", + "comment_gate" + ], + "type": "string" +} - removed
Output schema / properties / hook_scoreRemoved value: -{ - "description": "Self-rated hook quality score (0-100)", - "type": "number" -} - added
Output schema / properties / structural_skeletonAdded value: +{ + "description": "Which structural skeleton the generator used (confession_to_result, mistake_to_correction, etc). Surfaces rotation across the fleet.", + "type": "string" +} - added
Output schema / properties / ugc_authenticityAdded value: +{ + "description": "Tripwire for ad-shaped drift. Detected via regex on the produced script, not the model self-grade. If level=ad_leaning, surface to the user before shipping.", + "properties": { + "level": { + "description": "Honest signal of whether the generator drifted ad-ward", + "enum": [ + "native", + "ad_leaning" + ], + "type": "string" + }, + "reasons": { + "description": "List of detected drift reasons (e.g. \"hook is 22 words\", \"CTA is comment-gate\")", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" +} - added
Output schema / properties / verify_hookAdded value: +{ + "description": "Hook + instruction to chain into score_hook for a structurally-independent score (the script generator deliberately does NOT self-rate)", + "type": "object" +}
2 tool updates
- Changed
find_viral_template1 field changed- changed
Input schema / properties / niche / enumPrevious value: -[ - "Beauty & Skincare", - "Fitness & Health", - "Food & Cooking", - "Fashion & Style", - "Tech & Gadgets", - "Finance & Business", - "Education & Learning", - "Travel & Adventure", - "Comedy & Entertainment", - "Gaming", - "Lifestyle & Wellness", - "Parenting & Family", - "DIY & Crafts", - "Music & Dance", - "Pets & Animals", - "Sports", - "Motivation & Self-Help" -]New value: +[ + "Beauty & Skincare", + "Fitness & Health", + "Food & Cooking", + "Fashion & Style", + "Tech & Gadgets", + "Finance & Business", + "Education & Learning", + "Travel & Adventure", + "Comedy & Entertainment", + "Gaming", + "Lifestyle & Wellness", + "Parenting & Family", + "DIY & Crafts", + "Music & Dance", + "Pets & Animals", + "Sports", + "Motivation & Self-Help", + "SaaS & AI Tools" +]
- Changed
trend_pulse1 field changed- changed
Input schema / properties / niche / enumPrevious value: -[ - "Beauty & Skincare", - "Fitness & Health", - "Food & Cooking", - "Fashion & Style", - "Tech & Gadgets", - "Finance & Business", - "Education & Learning", - "Travel & Adventure", - "Comedy & Entertainment", - "Gaming", - "Lifestyle & Wellness", - "Parenting & Family", - "DIY & Crafts", - "Music & Dance", - "Pets & Animals", - "Sports", - "Motivation & Self-Help" -]New value: +[ + "Beauty & Skincare", + "Fitness & Health", + "Food & Cooking", + "Fashion & Style", + "Tech & Gadgets", + "Finance & Business", + "Education & Learning", + "Travel & Adventure", + "Comedy & Entertainment", + "Gaming", + "Lifestyle & Wellness", + "Parenting & Family", + "DIY & Crafts", + "Music & Dance", + "Pets & Animals", + "Sports", + "Motivation & Self-Help", + "SaaS & AI Tools" +]
1 tool update
- Changed
analyze_account1 field changed- changed
Input schema / properties / platform / descriptionPrevious value: -"Platform to analyze. \"tiktok\" (default) returns full pipeline with transcripts. \"youtube\" analyzes the channel's recent Shorts via YouTube Data API; transcript extraction ships in v1.1 — meta-analysis still runs on titles, durations, hashtags, and engagement stats. Instagram ships in v1.2."New value: +"Platform to analyze. \"tiktok\" (default) returns full pipeline with transcripts. \"youtube\" analyzes the channel's recent Shorts via YouTube Data API + Innertube caption extraction (v1.1, 2026-06-10) — videos with captions disabled or geoblocked resolve to transcript: null and the response flags how many were extracted. Instagram ships in v1.2."
4 tool updates
- Changed
analyze_account3 fields changed- added
Input schema / properties / recent_onlyAdded value: +{ + "description": "When true, hard-cap the candidate pool to videos posted in the last 90 days. Stricter than `window=90d` because it never falls through to archival data on a thin recent corpus.", + "type": "boolean" +} - added
Input schema / properties / sinceAdded value: +{ + "description": "Optional ISO date (e.g. \"2026-04-01\"). Filter the candidate video pool to those posted on/after this date. Useful when the user asks \"show me what they've done THIS month\" — the route returns honest empty + warning when the filter matches 0, no credits charged. Use either `since` or `window`, not both.", + "type": "string" +} - added
Input schema / properties / windowAdded value: +{ + "description": "Recency sugar — same effect as `since` but takes a friendlier bucket. Maps to a since-cutoff at request time. Use either `since` or `window`, not both.", + "enum": [ + "24h", + "7d", + "30d", + "90d", + "6m", + "12m", + "this-month" + ], + "type": "string" +}
- Changed
find_viral_template2 fields changed- added
Input schema / properties / regionAdded value: +{ + "description": "Optional 2-letter ISO country code (US, GB, BR, JP, IN, PH, etc.). Threads to YouTube Search regionCode + TikTok niche query. Reddit niche signals are global and ignore this param. Pass when the user wants templates that resonate with a specific local audience.", + "type": "string" +} - added
Input schema / properties / windowAdded value: +{ + "description": "Recency filter. Drops example videos older than the window. Note: TikTok hashtag-corpus rows often lack timestamps and are excluded when window is set — surfaces as a quality warning so callers can decide whether to broaden.", + "enum": [ + "24h", + "7d", + "30d", + "90d", + "this-month" + ], + "type": "string" +}
- Added
search_videos - Changed
trend_pulse1 field changed- added
Input schema / properties / regionAdded value: +{ + "description": "Optional 2-letter ISO country code (US, GB, BR, JP, IN, PH, etc.). Threads to Google Trends geo + YouTube regionCode. Defaults to US when omitted. Reddit signals are global and ignore this param.", + "type": "string" +}
1 tool update
- Changed
trend_pulse2 fields changed- changed
Output schema / properties / rising / descriptionPrevious value: -"Rising opportunities (format/hook/style) with growth rates and suggestions"New value: +"Rising opportunities (format/hook/style) with qualitative growth labels + signal_strength numeric anchor (0-1) + suggestions" - added
Output schema / properties / rising / items / properties / growth / descriptionAdded value: +"Qualitative growth label (\"Rising\", \"Early signal\", \"Accelerating\"). NOT a numeric percentage — the upstream does not compute \"+178%\"-style rates. Use signal_strength as the quantitative anchor."
1 tool update
- Changed
analyze_account3 fields changed- changed
Input schema / properties / handle / descriptionPrevious value: -"TikTok handle, with or without @ prefix (e.g. \"@mrbeast\" or \"mrbeast\")"New value: +"Creator handle (with or without @ prefix) or YouTube channel ID. Examples: \"@mrbeast\", \"mrbeast\", \"UCX6OQ3DkcsbYNE6H8uQQuVA\"." - changed
Input schema / properties / platform / descriptionPrevious value: -"Platform — currently only \"tiktok\" is supported"New value: +"Platform to analyze. \"tiktok\" (default) returns full pipeline with transcripts. \"youtube\" analyzes the channel's recent Shorts via YouTube Data API; transcript extraction ships in v1.1 — meta-analysis still runs on titles, durations, hashtags, and engagement stats. Instagram ships in v1.2." - added
Input schema / properties / platform / enumAdded value: +[ + "tiktok", + "youtube" +]
2 tool updates
- Changed
find_viral_template2 fields changed- changed
Input schema / properties / niche / descriptionPrevious value: -"Niche to search (e.g. \"Beauty & Skincare\")"New value: +"One of the 17 supported niches. Loose names like \"travel\" or \"fitness\" are accepted but pass the canonical form when possible." - added
Input schema / properties / niche / enumAdded value: +[ + "Beauty & Skincare", + "Fitness & Health", + "Food & Cooking", + "Fashion & Style", + "Tech & Gadgets", + "Finance & Business", + "Education & Learning", + "Travel & Adventure", + "Comedy & Entertainment", + "Gaming", + "Lifestyle & Wellness", + "Parenting & Family", + "DIY & Crafts", + "Music & Dance", + "Pets & Animals", + "Sports", + "Motivation & Self-Help" +]
- Changed
trend_pulse2 fields changed- changed
Input schema / properties / niche / descriptionPrevious value: -"Niche filter (e.g. \"Beauty & Skincare\", \"Fitness & Health\"). Omit for broadly applicable trends."New value: +"One of the 17 supported niches. Loose names like \"travel\" or \"fitness\" are accepted but pass the canonical form when possible. Omit for broadly applicable trends." - added
Input schema / properties / niche / enumAdded value: +[ + "Beauty & Skincare", + "Fitness & Health", + "Food & Cooking", + "Fashion & Style", + "Tech & Gadgets", + "Finance & Business", + "Education & Learning", + "Travel & Adventure", + "Comedy & Entertainment", + "Gaming", + "Lifestyle & Wellness", + "Parenting & Family", + "DIY & Crafts", + "Music & Dance", + "Pets & Animals", + "Sports", + "Motivation & Self-Help" +]
1 tool update
- Changed
analyze_account1 field changed- added
Output schema / properties / recommended_chain / items / properties / action_classAdded value: +{ + "description": "Authority taxonomy: research (read-only data gathering, lowest authority), synthesize (generate content in-memory, low), draft (save to workspace, medium), publish (post to external platforms, HIGH), account (modify account/billing, HIGHEST). All Hooklayer v1 tools are research or synthesize.", + "enum": [ + "research", + "synthesize", + "draft", + "publish", + "account" + ], + "type": "string" +}
1 tool update
- Changed
analyze_account2 fields changed- changed
Output schema / properties / recommended_chain / descriptionPrevious value: -"Pre-filled next tool calls (match_voice, trend_pulse, viral_remix)"New value: +"Suggested next tool calls with pre-filled parameters — advisory only, agent decides whether to execute" - added
Output schema / properties / recommended_chain / items / propertiesAdded value: +{ + "confidence": { + "description": "Signal-derived confidence that this step will produce useful results", + "enum": [ + "high", + "medium", + "low" + ], + "type": "string" + }, + "cost": { + "description": "Credit cost for this tool call", + "type": "number" + }, + "expected_output": { + "description": "One-line summary of what this tool returns", + "type": "string" + }, + "params": { + "description": "Pre-filled parameters for the tool", + "type": "object" + }, + "reason": { + "description": "Why this step is recommended", + "type": "string" + }, + "side_effects": { + "description": "Always \"none\" — all tools are read-only", + "type": "string" + }, + "tool": { + "description": "Exact tool name to call", + "type": "string" + } +}
7 tool updates
- Changed
analyze_account1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "content_gaps": { + "description": "Untapped content opportunities the creator is missing", + "items": { + "type": "string" + }, + "type": "array" + }, + "credits_remaining": { + "description": "Credits remaining after this call", + "type": "number" + }, + "format_fingerprint": { + "description": "Dominant content format patterns (durations, styles, edit types)", + "type": "object" + }, + "from_payg": { + "description": "Whether credits came from pay-as-you-go balance", + "type": "boolean" + }, + "from_subscription": { + "description": "Whether credits came from subscription", + "type": "boolean" + }, + "pattern_analysis": { + "description": "Content pattern breakdown (posting cadence, topic clusters)", + "type": "object" + }, + "profile": { + "description": "Creator profile (handle, bio, followers, following, total_likes, total_videos)", + "type": "object" + }, + "recent_videos": { + "description": "Top recent videos with view counts, transcripts, and engagement", + "items": { + "type": "object" + }, + "type": "array" + }, + "recommended_chain": { + "description": "Pre-filled next tool calls (match_voice, trend_pulse, viral_remix)", + "items": { + "type": "object" + }, + "type": "array" + }, + "steal_map": { + "description": "Actionable elements to replicate from this creator", + "items": { + "type": "object" + }, + "type": "array" + }, + "viral_dna": { + "description": "Five viral DNA scores (0-100 each)", + "properties": { + "audience_fatigue": { + "type": "number" + }, + "consistency_score": { + "type": "number" + }, + "originality_score": { + "type": "number" + }, + "replicability_score": { + "type": "number" + }, + "viral_dna_score": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" +}
- Changed
find_viral_template1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "credits_remaining": { + "description": "Credits remaining after this call", + "type": "number" + }, + "from_payg": { + "description": "Whether credits came from pay-as-you-go balance", + "type": "boolean" + }, + "from_subscription": { + "description": "Whether credits came from subscription", + "type": "boolean" + }, + "niche": { + "description": "The niche searched", + "type": "string" + }, + "templates": { + "description": "Ranked viral templates with hook patterns and example URLs", + "items": { + "properties": { + "avg_views": { + "type": "number" + }, + "format": { + "type": "string" + }, + "hook_pattern": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" +}
- Changed
match_voice1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "credits_remaining": { + "description": "Credits remaining after this call", + "type": "number" + }, + "from_payg": { + "description": "Whether credits came from pay-as-you-go balance", + "type": "boolean" + }, + "from_subscription": { + "description": "Whether credits came from subscription", + "type": "boolean" + }, + "prompt_instructions": { + "description": "Reusable prompt to replicate this voice", + "type": "string" + }, + "rewritten_draft": { + "description": "The input draft rewritten in the matched voice", + "type": "string" + }, + "voice_profile": { + "description": "Extracted voice DNA profile", + "properties": { + "energy": { + "type": "string" + }, + "humor": { + "type": "string" + }, + "signatures": { + "description": "Signature phrases and moves", + "items": { + "type": "string" + }, + "type": "array" + }, + "vocabulary": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" +}
- Changed
predict_virality1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "blueprint": { + "description": "Retention diagnosis with weak seconds identified", + "type": "object" + }, + "credits_remaining": { + "description": "Credits remaining after this call", + "type": "number" + }, + "from_payg": { + "description": "Whether credits came from pay-as-you-go balance", + "type": "boolean" + }, + "from_subscription": { + "description": "Whether credits came from subscription", + "type": "boolean" + }, + "share_reason": { + "description": "Why viewers would share this content", + "type": "string" + }, + "target_emotion": { + "description": "Primary emotion the content targets", + "type": "string" + }, + "viral_dna": { + "description": "Hook type, structure, emotional triggers breakdown", + "type": "object" + }, + "virality_score": { + "description": "Overall virality prediction (0-100)", + "type": "number" + } + }, + "type": "object" +}
- Changed
score_hook1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "breakdown": { + "description": "Sub-scores (0-100) for five quality dimensions", + "properties": { + "curiosity": { + "type": "number" + }, + "emotional_pull": { + "type": "number" + }, + "pattern_alignment": { + "type": "number" + }, + "specificity": { + "type": "number" + }, + "urgency": { + "type": "number" + } + }, + "type": "object" + }, + "credits_remaining": { + "description": "Credits remaining after this call", + "type": "number" + }, + "from_payg": { + "description": "Whether credits came from pay-as-you-go balance", + "type": "boolean" + }, + "from_subscription": { + "description": "Whether credits came from subscription", + "type": "boolean" + }, + "pattern_match": { + "description": "Matched viral pattern name", + "type": "string" + }, + "percentile": { + "description": "Percentile rank vs all scored hooks", + "type": "number" + }, + "rewrites": { + "description": "Three rewritten versions at higher quality", + "items": { + "type": "string" + }, + "type": "array" + }, + "score": { + "description": "Hook quality score (0-100)", + "type": "number" + }, + "strengths": { + "description": "What the hook does well", + "items": { + "type": "string" + }, + "type": "array" + }, + "weaknesses": { + "description": "What could be improved", + "items": { + "type": "string" + }, + "type": "array" + }, + "why": { + "description": "One-sentence verdict explaining the score", + "type": "string" + } + }, + "type": "object" +}
- Changed
trend_pulse1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "credits_remaining": { + "description": "Credits remaining after this call", + "type": "number" + }, + "from_payg": { + "description": "Whether credits came from pay-as-you-go balance", + "type": "boolean" + }, + "from_subscription": { + "description": "Whether credits came from subscription", + "type": "boolean" + }, + "niche": { + "description": "The niche these trends apply to", + "type": "string" + }, + "rising": { + "description": "Rising opportunities (format/hook/style) with growth rates and suggestions", + "items": { + "properties": { + "growth": { + "type": "string" + }, + "suggestion": { + "type": "string" + }, + "title": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "saturated": { + "description": "Saturated patterns to avoid", + "items": { + "properties": { + "status": { + "type": "string" + }, + "title": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" +}
- Changed
viral_remix1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "camera_shots": { + "description": "Phone-native camera direction per scene", + "items": { + "type": "string" + }, + "type": "array" + }, + "credits_remaining": { + "description": "Credits remaining after this call", + "type": "number" + }, + "extracted_formula": { + "description": "The viral DNA formula extracted from the source", + "type": "string" + }, + "fresh_script": { + "description": "Complete scene-by-scene script mirroring the source structure", + "properties": { + "cta": { + "description": "Call-to-action closing", + "type": "string" + }, + "hook": { + "description": "Opening hook line", + "type": "string" + }, + "scenes": { + "description": "Scene-by-scene script with voiceover, visuals, and timing", + "items": { + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "from_payg": { + "description": "Whether credits came from pay-as-you-go balance", + "type": "boolean" + }, + "from_subscription": { + "description": "Whether credits came from subscription", + "type": "boolean" + }, + "hook_score": { + "description": "Self-rated hook quality score (0-100)", + "type": "number" + }, + "overlays": { + "description": "Text overlay suggestions per scene", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" +}
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user, then choose Claim with GitHub. An organization namespace such asio.github.acme/serveralso needs that organization to have installed the Glama AI GitHub App and approved its permissions, because GitHub discloses organization membership only to apps it has installed. Use HTTP or DNS when it has not.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
Agents-first viral-hook engine: generate, score, and remix short-form hooks over MCP.
100+ MCP tools for AI agents: content metadata, trade intelligence, business-expertise analysis.
Brand-intelligence MCP: momentum scoring, signal evidence, and competitive context for agents.
AI Visibility and Content Intelligence tools for Claude and MCP-compatible agents.
Related MCP Servers
- AlicenseAqualityAmaintenanceLicensed, rights-cleared content for AI agents, 17 tools to discover, license, retrieve, and verify expert content with on-chain proof and EU AI Act Article 53 support.87001MIT
- AlicenseAqualityCmaintenanceWeb intelligence MCP server for AI agents. 7 tools for SERP analysis, competitor research, market trends, content gap analysis, keyword insights, audience discovery, and citation tracking.72AGPL 3.0
- AlicenseNot gradedqualityCmaintenanceA read-only MCP server that gives AI agents the web as compact, ranked, verified evidence — no API keys, no cloud retrieval, all models local.231MIT
- AlicenseNot gradedqualityDmaintenanceVisibility-aware knowledge vault for AI agents with 20 MCP tools.3Apache 2.0
Glama MCP Gateway
Add one secure layer between your agents and this server.
TDQS
Each tool targets a distinct purpose: analysis, trend research, scoring, creation, and tracking. The lifecycle tools (analyze_account, watch_account, get_changes) are related but clearly delineated by baseline creation vs. comparison. score_hook and predict_virality could be mildly confused since both score content, though descriptions clarify hook-level vs. full-draft scope.
Nine of twelve tools follow the verb_noun pattern (analyze_account, find_viral_template, get_changes, list_watches, match_voice, predict_virality, score_hook, search_videos, watch_account). Three deviate: brief_to_blueprint, trend_pulse, and viral_remix use prepositional or noun-based naming, creating minor inconsistency but not confusion.
Twelve tools for a short-form content intelligence platform feels well-scoped. The surface covers research (4 tools), creation (3), validation (2), and tracking (3), with each tool earning its place. This sits comfortably within the ideal 3-15 range for a domain-specific server.
The research, creation, and validation workflows are well-covered, but the tracking lifecycle has a notable gap: watch_account and list_watches exist with no unwatch/remove_watch tool, and get_changes implies persistence without a way to manage it. Also missing is a single-video deep-dive tool (analyze_account only covers videos within full account analysis) and direct creator-to-creator comparison.