# Shorti (remote · shorti.ai)

What short-form formats to shoot this week, how their hits were made, and a check of your take.

- Trust score: 77/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-04

## Components

- remote · `shorti.ai`: 77/100 (this document), [markdown](https://verifymcp.io/servers/ai-shorti-shorti/shorti.md), [page](https://verifymcp.io/servers/ai-shorti-shorti/shorti)

## Channel facts

- Endpoint: `https://shorti.ai/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.1.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-10-04.

- **Endpoint Security**: 83/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC is configured correctly; the domain's records validate against the full chain to the root.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 75/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 5293 tokens (~240/item across 22 items; 15 tools + 7 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 20/100
  - Stability observed for 6 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 95/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 81% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 15 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 17 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).
  - Supports UI / widget rendering.

## Install

### How do I install the Shorti MCP server?

Shorti is a hosted endpoint at https://shorti.ai/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http ai-shorti-shorti 'https://shorti.ai/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "ai-shorti-shorti": {
      "url": "https://shorti.ai/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "ai-shorti-shorti": {
      "type": "http",
      "url": "https://shorti.ai/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.ai-shorti-shorti]
url = "https://shorti.ai/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "ai-shorti-shorti": {
      "type": "remote",
      "url": "https://shorti.ai/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add ai-shorti-shorti --url 'https://shorti.ai/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  ai-shorti-shorti:
    url: "https://shorti.ai/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "ai-shorti-shorti": {
      "Transport": "http",
      "Url": "https://shorti.ai/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add ai-shorti-shorti -t streamable-http -u 'https://shorti.ai/mcp'
```

### Other

```json
{
  "mcpServers": {
    "ai-shorti-shorti": {
      "type": "http",
      "url": "https://shorti.ai/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-10-04 (score 77, 0)

- [security] The server rewrote its instructions, which are the text every model session reads
- [functional regression] Tool coverage: 89% → 81%
- [functional improvement] Schema quality: 281 → 240
- [functional] New resource “approve”
- [functional] New resource “check”
- [functional] New resource “take”
- [functional] Server version: e71525b90ef0119f105cdb8c18aaf749d2084a46 → d3c50401d450fdce0f0769027d17bf3f8ead5285
- [functional] New tool “shorti_arena”
- [cosmetic] “shorti_find” reworded the description of “category”
- [cosmetic] “shorti_trend_radar” reworded the description of “category”
- [cosmetic] “shorti_what_to_shoot” reworded the description of “category”

### 2026-10-03 (score 77, +1)

- [security] The server rewrote its instructions, which are the text every model session reads
- [security] Tool “shorti_edit_recipe” rewrote its description, which is the text the model reads
- [security] Tool “shorti_format” rewrote its description, which is the text the model reads
- [security] Tool “shorti_video” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 4350 → 5067
- [functional] New resource “coach”
- [functional] New resource “flow”
- [functional] Server version: 01e18498ef2e09d1c2ae8b2e2938ff25c8cf5829 → e71525b90ef0119f105cdb8c18aaf749d2084a46
- [functional] New tool “shorti_flow”

### 2026-10-02 (score 76, 0)

- [security] The server rewrote its instructions, which are the text every model session reads
- [security] Tool “shorti_campaign_board” rewrote its description, which is the text the model reads
- [security] Tool “shorti_campaign_draft” rewrote its description, which is the text the model reads
- [security] Tool “shorti_campaigns_for_me” rewrote its description, which is the text the model reads
- [security] Tool “shorti_check_link” rewrote its description, which is the text the model reads
- [security] Tool “shorti_format” rewrote its description, which is the text the model reads
- [security] Tool “shorti_my_field” rewrote its description, which is the text the model reads
- [security] Tool “shorti_remake_recipe” rewrote its description, which is the text the model reads
- [security] Tool “shorti_video” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 3838 → 4350
- [functional] Server version: d73dd180b23275cc85ee3fcb0a43633b363b2d32 → 01e18498ef2e09d1c2ae8b2e2938ff25c8cf5829
- [functional] New tool “shorti_scene_kit”
- [cosmetic] “shorti_campaign_draft” added an optional parameter “visit”
- [cosmetic] “shorti_format” added an optional parameter “detail”
- [cosmetic] “shorti_remake_recipe” added an optional parameter “detail”
- [cosmetic] “shorti_my_field” reworded the description of “field”
- [cosmetic] “shorti_video” reworded the description of “detail”

### 2026-10-01 (score 76, 0)

- [security] The server rewrote its instructions, which are the text every model session reads
- [functional] Server version: 57f8c123ad054b6fb281f7af320e2a82cac14e5f → d73dd180b23275cc85ee3fcb0a43633b363b2d32

### 2026-09-30 (score 76, +1)

- [functional] Server version: 26fbcc45f69a7b563e58707c17fb3a72f85734fc → 57f8c123ad054b6fb281f7af320e2a82cac14e5f

### 2026-09-29 (score 75, 0)

- [security] The server rewrote its instructions, which are the text every model session reads
- [security] Tool “shorti_what_to_shoot” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 2740 → 3758
- [functional improvement] Stability: unverified → 0.03
- [functional] MCP protocol: Implements a current MCP spec version (2026-07-28).
- [functional] New prompt “before_it_reaches_korea”
- [functional] New prompt “my_field_this_week”
- [functional] New prompt “remake_a_hit_with_ai”
- [functional] MCP protocol version: 2025-11-25 → 2026-07-28
- [functional] Server version: d1491abd4ec9c292f46362dd323381dcac8f4b4f → 26fbcc45f69a7b563e58707c17fb3a72f85734fc
- [functional] New tool “shorti_my_field”
- [functional] New tool “shorti_remake_recipe”
- [functional] New tool “shorti_trend_radar”
- [cosmetic] Tool “shorti_campaign_board” changed its title: Shorti Campaign Board
- [cosmetic] Tool “shorti_campaign_draft” changed its title: Shorti Campaign Draft
- [cosmetic] Tool “shorti_campaigns_for_me” changed its title: Shorti Campaigns For Me

### 2026-09-28 (score 75)

First indexed and scored.

## MCP tools (15)

### `shorti_what_to_shoot` (~286 tokens)

What to shoot this week

The formats to shoot this week: the week's picks, then the week's feed. The short-form formats breaking out now (TikTok, Reels, Shorts): this week's picks first — each with Shorti's line on the hit that broke out this week (`this_week.why`) and that hit's link — then the rest of the week's feed, in the order Shorti's home shows it. Each format says what its videos do, its strongest video (link, views, poster), how it has spread, its page and the check with it filled. Narrow by `category` (the creator's niche) and `platform`. Signed in, the person's own week leads (`for_you`: why each came to them). Use it when a creator or a brand asks what to make now; then shorti_format(format_id) for how to shoot one.

Input parameters:

- `category`: The creator's niche, when they have one: beauty, food, fashion, daily, comedy, dance, music, pets, fitness, travel, art, gaming, product, info, ai, household, tech, parenting.
- `lang` (string): The creator's language. 'en' answers in the English Shorti wrote: never translate its Korean yourself.
- `limit` (integer): How many formats.
- `platform`: Only formats with videos on this platform.

Output parameters:

- `as_of`: when the data was compiled
- `campaign`: present while Shorti's own 체험단 is open: its mission and what it pays (the sign-ups a video brings), for each format's `links.mission`
- `for_you`: true when a signed-in reader's own week leads the list
- `formats`
- `hint`
- `none`
- `note`
- `refusal`: why nothing was answered, by name
- `week`: the Monday (KST) the week's picks are fixed on

### `shorti_trend_radar` (~293 tokens)

Trend radar

Formats breaking out in the West that no Korean video holds yet, and those arriving. Formats breaking out in the West (the US, Europe, other English-speaking countries) that no Korean video holds yet, then those just reaching Korea, in Shorti's radar order. Each says what its videos do, its strongest video (link, views), how many Western videos and creators broke out with it and when last, how many Korean videos it has, and how much of it needs no language (`language_light`). `to_korea` is the measured time from a Western hit to the first Korean video across this release's formats. Use it when a creator asks what to shoot before it reaches Korea; narrow by `category` or `state`; then shorti_format(format_id) for how to shoot one.

Input parameters:

- `category`: The creator's niche, when they have one: beauty, food, fashion, daily, comedy, dance, music, pets, fitness, travel, art, gaming, product, info, ai, household, tech, parenting.
- `lang` (string): The creator's language. 'en' answers in the English Shorti wrote: never translate its Korean yourself.
- `limit` (integer): How many formats.
- `state`: 'not_in_korea': no Korean video yet; 'arriving': the first ones; 'entered': already made in Korea.

Output parameters:

- `as_of`: when the data was compiled
- `campaign`: present while Shorti's own 체험단 is open: its mission and what it pays (the sign-ups a video brings), for each format's `links.mission`
- `counts`: how many formats the radar holds in each state
- `formats`
- `hint`
- `none`
- `note`
- `refusal`: why nothing was answered, by name
- `to_korea`: the measured time from a Western hit to the first Korean video

### `shorti_my_field` (~427 tokens)

Short-form for my field

A profession's or a brand team's short-form week: ideas, how its breakouts are made, what to check before posting. For doctors (피부과, 성형외과 …), dentists, Korean medicine, pharmacists, lawyers, tax accountants, labor attorneys, accountants, realtors and brand teams: this week's ideas (a title, the way, the first line, how to shoot it); the ways the field's breakout videos are made, with their links and views; what its breakouts share; one creator's breakout beside their own usual video; memes, and this week's formats with the field's twist (`format_id` for shorti_format); what to check before posting, each line with the Korean statute behind it; for brand teams a week's posting plan. Also for creators by field (뷰티, 패션, 리빙, 푸드, 밈·코미디, 일상, 반려동물, 운동, 여행, 댄스), 체험단 reviewers (뷰티 · 맛집 · 생활용품 체험단), shop owners (식당·카페, 미용실·네일, 운동 센터) and actors: the persona's breakouts with their links and views, the formats many in it shoot and, in Korean, the formats rising in the West near it with no Korean video yet. `field` in the person's own words; one Shorti does not read answers the fields and personas it does. lang='en' reads the English-speaking market's videos.

Input parameters:

- `field` (string, required): The person's profession, team or field in their own words: 피부과, 치과, 약사, 변호사, 세무사, 공인중개사, 브랜드 담당자, 뷰티, 맛집 체험단, 카페 사장, 미용실, 배우, dermatologist, lawyer, realtor, brand team, salon …
- `lang` (string): The creator's language. 'en' answers in the English Shorti wrote: never translate its Korean yourself.

Output parameters:

- `as_of`
- `asked`
- `before_you_post`: what to check before posting
- `breakouts`: the persona's breakouts in the league, by views (the Korean market's first on ko)
- `campaign`: present while Shorti's own 체험단 is open: its mission and what it pays (the sign-ups a video brings), for each format's `links.mission`
- `creator_reviews`: a shop owner or a brand team: breakouts review creators made about places or products like theirs
- `field`
- `fields`: the fields Shorti reads, when `field` named none
- `formats_many_are_shooting`
- `formats_many_creators`: moves several of the field's creators broke out with
- `hint`
- `market`: 'ko' the Korean market's videos, 'en' the English-speaking market's
- `memes`
- `most_watched`
- `name`
- `note`
- `page`: the field's page on Shorti
- `persona`: a creator's field, a 체험단 reviewer's, a shop owner's or an actor's (`creator.beauty`, `owner.salon` …) when `field` named one
- `personas`: the personas Shorti serves, when `field` named none
- `refusal`: why nothing was answered, by name
- `rising_abroad_not_in_korea`: ko: formats breaking out in the West near this persona with no or few Korean videos
- `role`
- `same_person`: one creator's breakout beside their own usual video
- `state`: 'ok'; 'unknown_field' lists the fields in `fields`; 'not_ready'
- `this_week`: this week's ideas to shoot
- `trend_twists`: this week's formats with the field's twist
- `ways`
- `week_plan`: brand teams: a week's posting slots
- `what_breakouts_share`

### `shorti_find` (~278 tokens)

Find formats

Formats for words, a category or a pasted link. Search by words — a niche, an action, a place, a creator's @handle (Korean initials work) — by `category`, or by a pasted TikTok, Instagram or YouTube link (the video and its formats, or `not_in_corpus` for a video Shorti has not read). Strongest example first; groups whose videos share only a song are left out unless `include_sound_groups`. With no match the answer lists the categories that have formats. For a brand's product line, shorti_campaign_draft finds the formats a product fits.

Input parameters:

- `category`: The creator's niche, when they have one: beauty, food, fashion, daily, comedy, dance, music, pets, fitness, travel, art, gaming, product, info, ai, household, tech, parenting.
- `cursor`: A previous answer's next_cursor.
- `include_sound_groups` (boolean): Also list groups that share only a song.
- `lang` (string): The creator's language. 'en' answers in the English Shorti wrote: never translate its Korean yourself.
- `limit` (integer): How many formats a page.
- `query` (string): Words to find; empty lists by category.
- `url`: A post's link.

Output parameters:

- `as_of`: when the data was compiled
- `campaign`: present while Shorti's own 체험단 is open: its mission and what it pays (the sign-ups a video brings), for each format's `links.mission`
- `field`: the profession or team the words name: shorti_my_field answers its week
- `formats`
- `hint`
- `matches`: how many formats matched
- `next_cursor`: pass it back as `cursor` for the next page
- `none`
- `note`
- `product_fits`: with no match on a format's own words: the formats whose videos carry a product like the words (a brand's line)
- `query`
- `refusal`: why nothing was answered, by name
- `state`: 'not_in_corpus': Shorti has not read this video
- `video`: the video a pasted link names

### `shorti_format` (~442 tokens)

How to shoot a format

One format as a creator shoots it: its plan, its hits, its spread. What its videos do; `how_to_shoot` — its reference hit step by step on that video's own clock, its length, what the format's videos keep and what a creator may make their own (where the format has a counted formula, `formula` lists what its breakouts do alike: each cue, how to do it, how widely in Shorti's words, and a breakout that shows it at a moment); `idea_card`, the format's own hook, turn and how a brand's product sits in it; its strongest hits with links and views (`why`: Shorti's line on a hit the format names as its own example); `moments`, what viewers reacted to and where; `flow`, how its way of shooting moved: what its newest breakouts did (`now`), its ladder of changes with how many took each rung in words, the worlds it moved into, up to three spots nobody has taken yet (`open`) and the same way of shooting under other sounds (`lineage`: its `id` for shorti_flow); how it has spread; its page and the check with it filled. Address it by `format_id` (from shorti_what_to_shoot or shorti_find, or the slug of its page), or by `video_id` or `url` of one of its videos. The default summary keeps the shoot clock and keep/change, with three hits; detail='full' returns the unchanged legacy answer.

Input parameters:

- `detail` (string): summary: compact agent answer, Korean person-facing text with lang=ko; model prompts are marked for_model=true. full: the unchanged legacy answer, including its original bilingual/model text.
- `format_id`: The format's id or its page's slug.
- `lang` (string): The creator's language. 'en' answers in the English Shorti wrote: never translate its Korean yourself.
- `url`: One of its videos, by the post's link.
- `video_id`: One of its videos, by Shorti's id.

Output parameters:

- `as_of`: when the data was compiled
- `campaign`: present while Shorti's own 체험단 is open: its mission and what it pays (the sign-ups a video brings), for each format's `links.mission`
- `flow`: how its way of shooting moved: the line about now, the ladder of changes, the worlds it moved into, the spots nobody has taken
- `format`
- `hint`
- `hits`: the format's strongest hits
- `how_to_shoot`
- `idea_card`: the format's own idea card (Shorti's reading)
- `moments`: the moments viewers reacted to, each where it shows
- `next`
- `note`
- `refusal`: why nothing was answered, by name

### `shorti_flow` (~335 tokens)

Flow across sounds

One way of shooting across sounds: the trends it ran under, its milestones, its ladder of changes, the worlds it moved into, the ways of shooting it meets and the spots nobody has taken. By `id` (a lineage: `flow.lineage.id` from shorti_format, or the slug of its page) or by `format` (a format_id: the lineage its way of shooting belongs to, else that format's own flow). `line` is the way of shooting; `sources` the trends it ran under, in the order it reached them (`since`, and `format_id` for shorti_format); `rail` its milestones oldest first, each video with its rung of the ladder (`kind`), the world it moved into, the change's name (`label`), what it did (`twist`) and its link; `ladder` how many videos took each rung, in words; `worlds` where it moved; `meets` the ways of shooting it splits into or meets in one video (`id` for shorti_flow); `open` up to three changes nobody has made yet, each with how to shoot it, as advice. Counts are words, never numbers or shares. It says what videos did, never what will get views or why one spread.

Input parameters:

- `format`: A format_id or its page's slug.
- `id`: A lineage's id (lin_…) or its page's slug.
- `lang` (string): The creator's language. 'en' answers in the English Shorti wrote: never translate its Korean yourself.

Output parameters:

- `as_of`: when the data was compiled
- `campaign`: present while Shorti's own 체험단 is open: its mission and what it pays (the sign-ups a video brings), for each format's `links.mission`
- `flow_view` (object): The site flow section in an MCP App. Words are in lang; the host locale changes chrome only. Clips are the 720p rendition or null. Unknown ladder counts keep key and count null and draw no count labe…
- `hint`
- `id`: the lineage answered (or the format, where its way of shooting has none)
- `ladder`
- `line`: the way of shooting
- `link`: where the person sees this flow on Shorti
- `meets`: the other ways of shooting it splits into or meets
- `note`
- `now`
- `open`: up to three changes nobody has made yet
- `rail`: its milestones, oldest first
- `refusal`: why nothing was answered, by name
- `sources`: the trends it ran under, in the order it reached them
- `worlds`

### `shorti_video` (~232 tokens)

One video

One video: what happens in it, its beats, its numbers and its formats. By a post's link or Shorti's video_id: what happens in it, its hook, turn and beats (Shorti's reading), its `cues` where a director read it (the moments worth copying, each with what to do), views and views per day, length, its page and the formats it belongs to. A video Shorti has not read answers `not_in_corpus`. The default detail='summary' is the compact reading; detail='full' answers every compiled field (large). The previous detail='brief' remains accepted.

Input parameters:

- `detail` (string): summary: compact agent answer, Korean person-facing text with lang=ko; model prompts are marked for_model=true. full: the unchanged legacy answer, including its original bilingual/model text.
- `lang` (string): The creator's language. 'en' answers in the English Shorti wrote: never translate its Korean yourself.
- `url`: The post's link.
- `video_id`: Shorti's id of the video.

Output parameters:

- `as_of`: when the data was compiled
- `campaign`: present while Shorti's own 체험단 is open: its mission and what it pays (the sign-ups a video brings), for each format's `links.mission`
- `coach_view` (object): The MCP coaching player. Text is reduced to lang. Legacy answer fields may accompany the view; the player consumes only these named fields.
- `formats`: the formats it belongs to
- `full`: with detail='full': the compiled video, every field
- `hint`
- `note`
- `refusal`: why nothing was answered, by name
- `state`: 'not_in_corpus': Shorti has not read this video
- `video`

### `shorti_edit_recipe` (~501 tokens)

Edit recipe

A format's edit for an agent's editor: slots, cuts on the beat, captions, the check. `format_id` (from shorti_what_to_shoot, shorti_find or shorti_format): the format's compiled plan as the creator's editing agent takes it, for any editing tool or MCP it calls (trim, split, reorder, speed, captions, export). `recipe` is `shorti.edit_recipe.v1`: `canvas` (9:16) and `length_ms`; `slots` in order on the reference hit's own clock — what each `shows` (`ko` and `en`) and its `frame` where the plan carries one — one way the format was cut, not a timeline to copy to the frame; `anchors`, the reference's hook, rhythm, sound and framing values its format's members do not vary on, each with the `band` inside which a viewer cannot tell the edit from it (`never`: the reference never reaches it, e.g. one continuous take); `free`, what the format's own members vary on, with their usual span; `cuts`, each with the `rule` that binds it (`first_cut`, `drop`, `beat` with its `window_ms`, else `free`); `beats`, `captions`, `hook`, `keep`, `vary`, `sound` (its clock, a measured `drop`), `limits` (how much faster speech and motion may run before a viewer notices), `withheld` and `apply`, the steps to fit the creator's own pacing: cut where their action or phrase ends, hold the anchors, let the free cuts move. Beside it `formula`, where the format has a counted one: what its breakouts do alike (`cue`, `do` and `share` in `ko` and `en`, a breakout and its moment) and what its makers vary: the check the edit goes back to is held to these cues. Then send the edit to `check` (the person uploads and confirms on Shorti) or call shorti_check_link with `format` for a result this chat can read back — several edits can each be checked. What the hit did, never why it spread, and not a forecast of views.

Input parameters:

- `family_id`: The same id, by its older name.
- `format_id`: The format's id.

### `shorti_remake_recipe` (~449 tokens)

Remake recipe

A hit's remake for the AI video model an agent holds: keep, per-model prompts, the check. `video_id` or `url` of a hit, or `format_id` (its reference hit): `recipe` is `shorti.remake_recipe.v1`, the hit's own clock (cuts, beats, hook, turn) written as AI video models take it, for the creator's own generation tool (a Higgsfield, fal or gateway MCP). `mode`: swap_person (the creator in the hit's own shot), swap_place, swap_product, restyle_3d (a 3D animated version), character (every performer becomes one character), episode (a new episode of an AI-made format). `prompts` holds one plan per model — Seedance 2.5, MiniMax H3, Kling 3.0 Motion Control, Wan 3.0 — with its references in order and what each needs prepared, its requests cut at the hit's own cuts inside the model's limits (each with a timestamped prompt and parameters) and its list price; then `keep`, `fit`, `steps`, the `sound` to post with and the `check` the result goes back to. Nothing here generates or spends. What the hit did, never why it spread; not a forecast of views. The default summary keeps the source clock, keep, links and each model's segment_count and first request (for_model=true). Read detail='full' for all requests: it preserves the unchanged legacy answer.

Input parameters:

- `detail` (string): summary: compact agent answer, Korean person-facing text with lang=ko; model prompts are marked for_model=true. full: the unchanged legacy answer, including its original bilingual/model text.
- `format_id`: A format: its reference hit.
- `lang` (string): The creator's language. 'en' answers in the English Shorti wrote: never translate its Korean yourself.
- `mode` (string): What the remake changes.
- `url`: The hit, by the post's link.
- `video_id`: The hit, by Shorti's id.

### `shorti_scene_kit` (~266 tokens)

Scene kit

A served league video's generator scene kit: JSON, clay glTF, camera, light, beats, ledger buckets and C35 model adapters. A served league video's id or post link: reads its precompiled scene kit. The default summary keeps every source shot clock, keep/lift/free with evidence, export links, and each model's segment_count and first request (for_model=true). Read detail='full' for the unchanged complete legacy kit and all model requests. The full scene_kit.v0 has versioned OpenCV cameras, lens, trajectories, depth, light, beats, cuts and ledger buckets, a clay glTF export and four C35 adapters. Public identity is nr; the private twin joint uses only the owner's own likeness-consented assets, never league likeness. No analysis, generation, identity IO or spending runs in this request.

Input parameters:

- `detail` (string): summary: compact agent answer, Korean person-facing text with lang=ko; model prompts are marked for_model=true. full: the unchanged legacy answer, including its original bilingual/model text.
- `lang` (string): The creator's language. 'en' answers in the English Shorti wrote: never translate its Korean yourself.
- `video` (string, required): A league video's id or post link.

### `shorti_check_link` (~519 tokens)

Check a take

A check link for a person's own video, and the summary they send back. No argument, or `format` (a format_id): a link at once — `check_link` (`check_link_en` for the English page), `token`, `expires_at` (24 h) and `says` — that the person opens on their phone to upload their own video and check it against that format. Nothing is read of theirs, written or queued, and you never see their video. Then call again with the `token` alone: `waiting` (ask again after `poll_after_s`) until the person taps «Send this result to the AI chat» («이 결과를 AI 대화에 보내기» on the Korean page) on their result, then `shared` with the summary they sent: fidelity with its interval and how many axes were measured (`measured` of `of`, `weighted`) — its value stays null with reason `not_validated` until its registered validity look passes, with `followed` (k of n directions repeated across formats that the video follows) in its place — up to three fixes at their moment (`at_s`, `what_ko`, `how_ko`, the hit video's public still; where a fix was drawn, its `layers`: the hits' still at `still_url`, its shapes and zone, the take's own shapes, each drawn value's evidence — hosts that draw show them in the check's view), what they broke and kept, «기본기» where the check measured it (`craft`: `kept` of `of` craft ranges the field's breakouts keep, and what it misses; never a forecast of views), and their result's link (`link`, `link_en`); each line in English beside the Korean where Shorti wrote one (`what_en`, `how_en`, `broken_en`, `kept_en`). A token this door did not sign, or one past its 24 h with nothing sent, is refused as `handoff_invalid`; a summary sent after the 24 h is still read. 증거가 붙은 관찰로 말하고, 원인은 검증된 것만. 닮은 정도는 조회수 예측이 아니다. — Speak in observations that carry their evidence, and name a cause only where one was verified; fidelity is not a forecast of views.

Input parameters:

- `format`: A format_id to check against.
- `token`: The token a previous call gave.

### `shorti_arena` (~131 tokens)

Read Shorti's arena

The arena's open spots, first recorded takes, later breakouts and entrant standings. Read spots with their words, dates and how to shoot; the board of first recorded takes and finds; or one currently opted-in entrant's standing. Filter kind by move, vary, mix, about or found. Counts keep their denominators before the first-50 keyless cap. Names are read live. Missing or unread publication answers not_run, never an empty board.

Input parameters:

- `entrant`
- `kind`
- `lang` (string)
- `lineage`
- `view` (string, required)

### `shorti_campaigns_for_me` (~41 tokens)

Shorti Campaigns For Me

Read published campaign.offer.v1 summaries. This reads no personal matches or private brief. Legacy handoff tokens are refused.

Input parameters:

- `token`

### `shorti_campaign_board` (~33 tokens)

Shorti Campaign Board

Legacy campaign board reads are unavailable under C39. Open the owner-authenticated campaign page.

Input parameters:

- `token`

### `shorti_campaign_draft` (~162 tokens)

Shorti Campaign Draft

Requires the authenticated /mcp/me connection. Start a campaign from a product or store-visit brief. draft.v1 ranks observed league product presence, product nouns, place/screen evidence, category, cached Gemini Embedding 2 text cosine and keywords. Hits precede members and slotted precedes thin. It abstains when evidence does not fit and never pads. Optional visit carries place_type, area and radius_km; area/radius are campaign constraints, not measured reference distances. index_size is the whole index, eligible_candidates are fits. compose opens the signed-in composer with up to three formats. No model call or campaign write in this request.

Input parameters:

- `limit` (integer)
- `product` (string, required)
- `visit`

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/ai-shorti-shorti/shorti#diagnostics

## Score history

- 2026-10-04: 77
- 2026-10-03: 77
- 2026-10-02: 76
- 2026-10-01: 76
- 2026-09-30: 76
- 2026-09-29: 75
- 2026-09-28: 75

## Common questions

### What is the Shorti MCP server?

Shorti is an MCP server listed in the public MCP registry as ai.shorti/shorti. What short-form formats to shoot this week, how their hits were made, and a check of your take. This page covers its hosted endpoint (https://shorti.ai/mcp).

### Is the Shorti MCP server safe to use?

Shorti scores 77 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Shorti MCP server expose?

Shorti exposes 15 tools: shorti_what_to_shoot, shorti_trend_radar, shorti_my_field, shorti_find, shorti_format, and 10 more. Their descriptions and schemas cost roughly 4,395 tokens of context every time the server is loaded.

### Does the Shorti MCP server require authentication?

No. We connected to Shorti without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the Shorti MCP server still maintained?

Shorti is still listed as active in the MCP registry. We last reached this channel on 4 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://shorti.ai/mcp
- Website: https://shorti.ai/
- Changelog RSS feed: https://verifymcp.io/servers/ai-shorti-shorti/shorti.xml
- Changelog JSON feed: https://verifymcp.io/servers/ai-shorti-shorti/shorti.json
- HTML version of this page: https://verifymcp.io/servers/ai-shorti-shorti/shorti
