> ## Documentation Index
> Fetch the complete documentation index at: https://docs.contenthero.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Inspiration

> The research surface: the social accounts you track, and their posts ranked by outlier score.

The research surface: the social accounts you track, and their posts ranked by outlier score. 6 tools.

Every tool below is exposed by the hosted MCP server at `https://mcp.contenthero.ai` and by the `@contenthero/mcp` npm package. A <Badge>write</Badge> tool changes your account; a <Badge>read</Badge> tool does not.

### `list_tracked_accounts`

<Badge>read</Badge>

List the social accounts this ContentHero account tracks. TWO KINDS, in one list: accountType 'inspiration' is the creators and competitors they watch for research, 'brand' is their OWN profiles (distinct from list\_brand\_kits, which are the brand identity documents). Every row reports its own accountType, so omit the filter to see both. Call get\_tracked\_account for one account's performance, or list\_content for the posts. Pass brandKitId to scope to the accounts linked to a specific brand kit.

<ParamField body name="accountType" type="`inspiration` \| `brand`">
  Narrow to one kind. Omitted, both come back.
</ParamField>

<ParamField body name="brandKitId" type="string">
  Scope to the accounts linked to this brand kit (from get\_brand\_kit).
</ParamField>

<ParamField body name="cursor" type="string">
  The previous page's cursor.
</ParamField>

<ParamField body name="limit" type="integer">
  How many to return.
</ParamField>

### `get_tracked_account`

<Badge>read</Badge>

Get one tracked account with how its content actually performs: post count, total and average views/likes/comments, average engagement and outlier score, plus its top posts by outlier score and its most recent ones. Works for either kind of account: use it on one of the owner's OWN accounts to ground decisions in their real numbers, or on a creator they watch to study what works for that creator.

<ParamField body name="accountId" type="string" required>
  The account id from list\_tracked\_accounts.
</ParamField>

### `update_tracked_account`

<Badge>write</Badge>

Move a tracked account within its list (its kind's: the creators they watch, or their own profiles), after or before another of the same kind, or to an end. Returns the account with its performance, as get\_tracked\_account does. Requires the inspiration:write scope.

<ParamField body name="accountId" type="string" required>
  The account id from list\_tracked\_accounts.
</ParamField>

<ParamField body name="afterId" type="string">
  Place it immediately after this item of the same list.
</ParamField>

<ParamField body name="beforeId" type="string">
  Place it immediately before this item of the same list.
</ParamField>

<ParamField body name="position" type="`top` \| `bottom`">
  Place it at an end of the list instead of beside an item. Name neighbors or a position, not both.
</ParamField>

### `list_content`

<Badge>read</Badge>

The core research read: social posts this account tracks, ranked by OUTLIER SCORE (how far a post overperformed its own creator's baseline, so a small account's hit still surfaces), or by relevance when you pass search. SPANS BOTH the creators they watch and their OWN posts by default; set scope to narrow, and every row carries isOwn either way. This is how you answer both "what is working for the people I watch" and "how did my own posts do" without picking a subsystem first. Filter by platform, content type, a published window (publicationDate like 'week' or 'month', or exact publishedAfter/publishedBefore), and ranges over score, views, duration and follower count. Call get\_content for one post in full, including its transcript.

<ParamField body name="accountIds" type="string[]">
  Limit to these tracked account ids (from list\_tracked\_accounts).
</ParamField>

<ParamField body name="addedByYou" type="boolean">
  Only the one-off posts the owner saved by url.
</ParamField>

<ParamField body name="brandKitId" type="string">
  Scope to the accounts linked to this brand kit.
</ParamField>

<ParamField body name="contentType" type="string">
  Filter by content type, e.g. 'video', 'short', 'reel'.
</ParamField>

<ParamField body name="cursor" type="string">
  The previous page's cursor.
</ParamField>

<ParamField body name="durationMax" type="number">
  Maximum duration in seconds.
</ParamField>

<ParamField body name="durationMin" type="number">
  Minimum duration in seconds.
</ParamField>

<ParamField body name="favorited" type="boolean">
  Only content the account has favorited.
</ParamField>

<ParamField body name="limit" type="integer">
  How many to return.
</ParamField>

<ParamField body name="order" type="`asc` \| `desc`">
  The sort direction.
</ParamField>

<ParamField body name="outlierScoreMax" type="number">
  Only content at or below this outlier score.
</ParamField>

<ParamField body name="outlierScoreMin" type="number">
  Only content at or above this outlier score.
</ParamField>

<ParamField body name="platform" type="`youtube` \| `instagram`">
  Filter to one platform.
</ParamField>

<ParamField body name="publicationDate" type="`week` \| `month` \| `3months` \| `6months` \| `year` \| `2years`">
  Published within this window. Use publishedAfter for an exact date instead.
</ParamField>

<ParamField body name="publishedAfter" type="string">
  ISO timestamp. Wins over publicationDate.
</ParamField>

<ParamField body name="publishedBefore" type="string">
  ISO timestamp.
</ParamField>

<ParamField body name="scope" type="`all` \| `inspiration` \| `brand`">
  'inspiration' = creators they watch, 'brand' = their own accounts, 'all' = both (default).
</ParamField>

<ParamField body name="search" type="string">
  Finds posts by meaning and by keyword across title, creator, description and transcript, ranked by relevance. Returns only the posts judged relevant, so an empty result means nothing matched.
</ParamField>

<ParamField body name="sort" type="`relevance` \| `outlierScore` \| `publishedAt` \| `viewCount` \| `engagementRate`">
  The field to sort by.
</ParamField>

<ParamField body name="subscribersMax" type="number">
  Maximum follower count of the post's account.
</ParamField>

<ParamField body name="subscribersMin" type="number">
  Minimum follower count of the post's account.
</ParamField>

<ParamField body name="viewsMax" type="number">
  Only content at or below this view count.
</ParamField>

<ParamField body name="viewsMin" type="number">
  Only content at or above this view count.
</ParamField>

### `get_content`

<Badge>read</Badge>

Get one tracked post in full: engagement stats, outlier score, hashtags, keywords, mentions and audio info. Works for a creator's post and for the owner's own. THE TRANSCRIPT IS OPT-IN because a long video is a large document: pass transcript='text' for the whole thing, or transcript='segments' for timed slices, and then narrow with startMs/endMs or transcriptSearch to pull only the part that matters. The transcript reports a status: 'complete', 'not\_applicable' (there is nothing to transcribe), 'failed' (it will be retried), 'processing', or 'absent' (never attempted), so an empty result is never ambiguous. THE BREAK IT DOWN ANALYSIS IS OPT-IN THE SAME WAY: availability (status + section names) is always reported; pass analysis='full' for every section, or analysisSections for only the ones the task needs. SCENES ARE OPT-IN THE SAME WAY: availability is always reported; pass scenes='map' for each scene's time range, what happens in it and what is said, or scenes='frames' to also see a frame of each scene. startMs/endMs narrow either. Scenes exist once analyze\_content has run with kind scenes. transcriptSegments is excluded from 'full' because the transcript params above are the one transcript path.

<ParamField body name="contentId" type="string" required>
  The content id from list\_content, get\_tracked\_account, or a get\_card inspiration asset.
</ParamField>

<ParamField body name="analysis" type="`none` \| `full`">
  How much of the post's Break It Down analysis to include. Default 'none' (availability + section names still report).
</ParamField>

<ParamField body name="analysisSections" type="string[]">
  Only these analysis sections. The names differ by format, so take them from the availability line.
</ParamField>

<ParamField body name="endMs" type="number">
  Window end, ms from the start of the media. Narrows transcript segments and scenes.
</ParamField>

<ParamField body name="scenes" type="`none` \| `map` \| `frames`">
  How much of the post's scene map to include. Default 'none' (availability still reports). 'frames' adds an image of each scene, as many as fit this result; the rest are listed as links.
</ParamField>

<ParamField body name="startMs" type="number">
  Window start, ms from the start of the media. Narrows transcript segments and scenes.
</ParamField>

<ParamField body name="transcript" type="`none` \| `text` \| `segments`">
  How much transcript to include. Default 'none'.
</ParamField>

<ParamField body name="transcriptSearch" type="string">
  Return only the segments containing this phrase. Implies segments.
</ParamField>

### `analyze_content`

<Badge>write</Badge>

Analyze a tracked post, as one of two kinds. breakdown (default) runs Break It Down: why it works, from the hook and structure to visuals, audio, the call to action, and steps to recreate it. scenes prepares the post to be seen: a map of every scene with what happens and what is said in it, and a frame of each, which get\_content then returns. Viewing an existing result is free; creating one spends credits, so pass getCost to see the price first. If it returns pending, call it again for the result.

<ParamField body name="contentId" type="string" required>
  The content id from list\_content, get\_tracked\_account, or a get\_card inspiration asset.
</ParamField>

<ParamField body name="getCost" type="boolean">
  Return the credit cost instead of analyzing (nothing runs, nothing is charged). 0 when the result already exists.
</ParamField>

<ParamField body name="kind" type="`breakdown` \| `scenes`">
  breakdown (default): the Break It Down analysis. scenes: the scene map and a frame of each scene, priced per minute of video.
</ParamField>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.