_ registry / mcp streamable-http · checked 1h ago

shorti

https://shorti.ai

Registry code: 9a85456f27f47a39

api record

Shorti reads short-form video (TikTok, Instagram Reels, YouTube Shorts) by format — a way of shooting that many videos share — and knows which formats are breaking out now, how their hits were shot and edited, and how a creator's own take differs from those hits. For what to make now start with shorti_what_to_shoot (this week's picks, by the creator's niche); for what is breaking out in the West with no Korean video yet, shorti_trend_radar; for who the person is (a creator's field, a 체험단 reviewer, a shop owner, an actor, a profession or a brand team: a beauty creator, a cafe owner, a…

endpoint
https://shorti.ai/mcp
protocol
streamable-http ·2025-06-18
authentication
none observed
public key
none — nobody has proven they own this listing · is it yours? claim it
karma
0 · newcomer
_ is it live, free and safe measured by this hub
Is shorti live?
Yes — it answered the hub's last check (checked 1h ago). It answered 100% of checks over the last 30 days.
Is shorti free to use?
Yes — the hub reached it with no key and no payment.
What tools does shorti have?
16 tools: shorti_scene_get, shorti_arena, shorti_my_field, shorti_edit_recipe, shorti_scene_kit, shorti_campaign_draft, shorti_campaign_board, shorti_check_link, ….
Is shorti safe to connect?
The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
reachable
live
uptime, 30 days
100%

90 days 100%· all time 100%

latency
1,317ms

last good check

priced tools
0

of 16 tools

_ answered our checks, 90 days 54 checks · signed record
  • unknown → live
_ what it is for
used for
  • find short-form video formats trending now
  • get how a viral format was shot
  • get an edit recipe for a format
  • draft a creator campaign
takes → gives
text, web pages → data
tools
12 reads
_ used through this hub 30 days

The one measurement on this page that an operator cannot produce by editing a file on its own server: somebody else chose it, and paid to. Read the accounts before the calls — volume from one account is one relationship, and calling yourself is the cheap half. Both are what the ranking is built from, printed so the order can be checked rather than taken on trust.

accounts
0

distinct, expensive to fake

calls served
0

successful, last 30 days

_ what it can do 16 tools
10 open 6 never probed 10 of 16 classified

Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.

  • shorti_campaign_board reads open 20h ago

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

    mcp-tool

    {
      "type": "object",
      "properties": {
        "token": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 400
            },
            {
              "type": "null"
            }
          ],
          "default": null
        }
      },
      "additionalProperties": false
    }
    arguments 18 lines
  • shorti_check_link reads open 20h ago

    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 get feedback on it against that format's hits. 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. Lead with its `cue_check`, as their result screen does: the cues the format's hits share, each with what this video does with it (kept · partly · missed · changed · unclear), a note, its fix, its moment `at_s` and a hit that shows it; one line that sums it up; up to three fixes in order; what the video does well (`strengths`); what it made its own (`own`); and `credits`, what it does that the hits of other trends do too, as counts. `reads_as: another_trend` means it is another kind of video than this format: `near` then names the way of shooting it stands closer to and, in `near.check`, the format to check it against. Beside the cue check, where the measuring check ran: 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 measured fixes at their moment (`at_s`, `what_ko`, `how_ko`, the hit video's public still; where a fix was drawn, its `layers`, which hosts that draw show in the check's view), `compared` (the video's value on an axis beside the middle half of the hits'), what they broke and kept, and their result's link (`link`, `link_en`); each line in English beside the Korean where Shorti wrote one. To the person, call it feedback («피드백»). 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; a likeness is not a forecast of views.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "token": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 2048
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The token a previous call gave."
        },
        "format": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 200
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A format_id to check against."
        }
      },
      "additionalProperties": false
    }
    arguments 32 lines
  • shorti_flow open 18h ago

    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. `spread` lists observed platform arrivals (`platform`, `after_days`: whole elapsed days from the lineage's first posted video); `spread_line` says them in the answer's language. Both are absent for one platform. Ladder counts are words, never numbers or shares. It says what videos did, never what will get views or why one spread.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "id": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 120
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A lineage's id (lin_…) or its page's slug."
        },
        "lang": {
          "enum": [
            "ko",
            "en"
          ],
          "type": "string",
          "default": "ko",
          "description": "The creator's language. 'en' answers in the English Shorti wrote: never translate its Korean yourself."
        },
        "format": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 120
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A format_id or its page's slug."
        }
      },
      "additionalProperties": false
    }
    arguments 41 lines
  • shorti_campaigns_for_me reads open 20h ago

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

    mcp-tool

    {
      "type": "object",
      "properties": {
        "token": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 400
            },
            {
              "type": "null"
            }
          ],
          "default": null
        }
      },
      "additionalProperties": false
    }
    arguments 18 lines
  • shorti_what_to_shoot reads open 22h ago

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "lang": {
          "enum": [
            "ko",
            "en"
          ],
          "type": "string",
          "default": "ko",
          "description": "The creator's language. 'en' answers in the English Shorti wrote: never translate its Korean yourself."
        },
        "limit": {
          "type": "integer",
          "default": 6,
          "maximum": 10,
          "minimum": 1,
          "description": "How many formats."
        },
        "category": {
          "anyOf": [
            {
              "enum": [
                "beauty",
                "food",
                "fashion",
                "daily",
                "comedy",
                "dance",
                "music",
                "pets",
                "fitness",
                "travel",
                "art",
                "gaming",
                "product",
                "info",
                "ai",
                "household",
                "tech",
                "parenting"
              ],
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "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."
        },
        "platform": {
          "anyOf": [
            {
              "enum": [
                "tiktok",
                "instagram",
                "youtube"
              ],
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Only formats with videos on this platform."
        }
      },
      "additionalProperties": false
    }
    arguments 71 lines
  • shorti_trend_radar reads open 22h ago

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "lang": {
          "enum": [
            "ko",
            "en"
          ],
          "type": "string",
          "default": "ko",
          "description": "The creator's language. 'en' answers in the English Shorti wrote: never translate its Korean yourself."
        },
        "limit": {
          "type": "integer",
          "default": 6,
          "maximum": 10,
          "minimum": 1,
          "description": "How many formats."
        },
        "state": {
          "anyOf": [
            {
              "enum": [
                "not_in_korea",
                "arriving",
                "entered"
              ],
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "'not_in_korea': no Korean video yet; 'arriving': the first ones; 'entered': already made in Korea."
        },
        "category": {
          "anyOf": [
            {
              "enum": [
                "beauty",
                "food",
                "fashion",
                "daily",
                "comedy",
                "dance",
                "music",
                "pets",
                "fitness",
                "travel",
                "art",
                "gaming",
                "product",
                "info",
                "ai",
                "household",
                "tech",
                "parenting"
              ],
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "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."
        }
      },
      "additionalProperties": false
    }
    arguments 71 lines
  • shorti_find reads open 18h ago

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "url": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 2048
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A post's link."
        },
        "lang": {
          "enum": [
            "ko",
            "en"
          ],
          "type": "string",
          "default": "ko",
          "description": "The creator's language. 'en' answers in the English Shorti wrote: never translate its Korean yourself."
        },
        "limit": {
          "type": "integer",
          "default": 6,
          "maximum": 10,
          "minimum": 1,
          "description": "How many formats a page."
        },
        "query": {
          "type": "string",
          "default": "",
          "maxLength": 200,
          "description": "Words to find; empty lists by category."
        },
        "cursor": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 12
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A previous answer's next_cursor."
        },
        "category": {
          "anyOf": [
            {
              "enum": [
                "beauty",
                "food",
                "fashion",
                "daily",
                "comedy",
                "dance",
                "music",
                "pets",
                "fitness",
                "travel",
                "art",
                "gaming",
                "product",
                "info",
                "ai",
                "household",
                "tech",
                "parenting"
              ],
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "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."
        },
        "include_sound_groups": {
          "type": "boolean",
          "default": false,
          "description": "Also list groups that share only a song."
        }
      },
      "additionalProperties": false
    }
    arguments 91 lines
  • shorti_format reads open 18h ago

    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); `flow.spread` lists that lineage's observed platforms and elapsed days, with `flow.spread_line` in the answer's language (both absent for one platform); 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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "url": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 2048
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "One of its videos, by the post's link."
        },
        "lang": {
          "enum": [
            "ko",
            "en"
          ],
          "type": "string",
          "default": "ko",
          "description": "The creator's language. 'en' answers in the English Shorti wrote: never translate its Korean yourself."
        },
        "detail": {
          "enum": [
            "summary",
            "full"
          ],
          "type": "string",
          "default": "summary",
          "description": "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."
        },
        "video_id": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 120
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "One of its videos, by Shorti's id."
        },
        "format_id": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 120
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The format's id or its page's slug."
        }
      },
      "additionalProperties": false
    }
    arguments 63 lines
  • shorti_video reads open 22h ago

    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 and what its drawing points at, `look_at`), the director's `checklist` in the order one shoots, `to_shoot` (what it takes to shoot it again: `needs` in Shorti's words — how many people, where, how the camera is held, with what, how much editing — its closed `codes`, and where the asked language has them the `props`, the `camera` set-ups and what the presenter `does`), 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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "url": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 2048
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The post's link."
        },
        "lang": {
          "enum": [
            "ko",
            "en"
          ],
          "type": "string",
          "default": "ko",
          "description": "The creator's language. 'en' answers in the English Shorti wrote: never translate its Korean yourself."
        },
        "detail": {
          "enum": [
            "summary",
            "full"
          ],
          "type": "string",
          "default": "summary",
          "description": "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."
        },
        "video_id": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 120
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Shorti's id of the video."
        }
      },
      "additionalProperties": false
    }
    arguments 50 lines
  • shorti_remake_recipe reads open 16h ago

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "url": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 2048
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The hit, by the post's link."
        },
        "lang": {
          "enum": [
            "ko",
            "en"
          ],
          "type": "string",
          "default": "ko",
          "description": "The creator's language. 'en' answers in the English Shorti wrote: never translate its Korean yourself."
        },
        "mode": {
          "enum": [
            "swap_person",
            "swap_place",
            "swap_product",
            "restyle_3d",
            "character",
            "episode"
          ],
          "type": "string",
          "default": "swap_person",
          "description": "What the remake changes."
        },
        "detail": {
          "enum": [
            "summary",
            "full"
          ],
          "type": "string",
          "default": "summary",
          "description": "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."
        },
        "video_id": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 120
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The hit, by Shorti's id."
        },
        "format_id": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 120
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A format: its reference hit."
        }
      },
      "additionalProperties": false
    }
    arguments 76 lines
  • shorti_scene_get unknown never probed

    A served league video's phone positions from its published scene. A served league video's id or post link: reads its duration and phone setups, with Korean camera and light lines under lang='ko'. English omits those lines. Returns ready with the scene's date, version and page opening in 3D, or none when no scene is published. Nothing is analysed or spent in this request.

    mcp-tool

    {
      "type": "object",
      "required": [
        "video"
      ],
      "properties": {
        "lang": {
          "enum": [
            "ko",
            "en"
          ],
          "type": "string",
          "default": "ko",
          "description": "The creator's language. 'en' answers in the English Shorti wrote: never translate its Korean yourself."
        },
        "video": {
          "type": "string",
          "maxLength": 2048,
          "description": "A league video's id or post link."
        }
      },
      "additionalProperties": false
    }
    arguments 23 lines
  • shorti_arena unknown 16h ago

    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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "view"
      ],
      "properties": {
        "kind": {
          "anyOf": [
            {
              "enum": [
                "move",
                "vary",
                "mix",
                "about",
                "found"
              ],
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "lang": {
          "enum": [
            "ko",
            "en"
          ],
          "type": "string",
          "default": "ko"
        },
        "view": {
          "enum": [
            "spots",
            "board",
            "entrant"
          ],
          "type": "string"
        },
        "entrant": {
          "anyOf": [
            {
              "type": "string",
              "pattern": "^ae_[a-z2-7]{16}$"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "lineage": {
          "anyOf": [
            {
              "type": "string",
              "pattern": "^lin_[A-Za-z0-9_.-]{1,156}$"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        }
      },
      "additionalProperties": false
    }
    arguments 67 lines
  • shorti_my_field reads unknown 14h ago

    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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "field"
      ],
      "properties": {
        "lang": {
          "enum": [
            "ko",
            "en"
          ],
          "type": "string",
          "default": "ko",
          "description": "The creator's language. 'en' answers in the English Shorti wrote: never translate its Korean yourself."
        },
        "field": {
          "type": "string",
          "maxLength": 80,
          "description": "The person's profession, team or field in their own words: 피부과, 치과, 약사, 변호사, 세무사, 공인중개사, 브랜드 담당자, 뷰티, 맛집 체험단, 카페 사장, 미용실, 배우, dermatologist, lawyer, realtor, brand team, salon …"
        }
      },
      "additionalProperties": false
    }
    arguments 23 lines
  • shorti_edit_recipe reads unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "family_id": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 120
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The same id, by its older name."
        },
        "format_id": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 120
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "The format's id."
        }
      },
      "additionalProperties": false
    }
    arguments 32 lines
  • shorti_scene_kit unknown 16h ago

    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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "video"
      ],
      "properties": {
        "lang": {
          "enum": [
            "ko",
            "en"
          ],
          "type": "string",
          "default": "ko",
          "description": "The creator's language. 'en' answers in the English Shorti wrote: never translate its Korean yourself."
        },
        "video": {
          "type": "string",
          "maxLength": 2048,
          "description": "A league video's id or post link."
        },
        "detail": {
          "enum": [
            "summary",
            "full"
          ],
          "type": "string",
          "default": "summary",
          "description": "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."
        }
      },
      "additionalProperties": false
    }
    arguments 32 lines
  • shorti_campaign_draft reads unknown 14h ago

    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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "product"
      ],
      "properties": {
        "limit": {
          "type": "integer",
          "default": 5,
          "maximum": 5,
          "minimum": 1
        },
        "visit": {
          "anyOf": [
            {
              "type": "object",
              "required": [
                "place_type"
              ],
              "properties": {
                "area": {
                  "anyOf": [
                    {
                      "type": "string",
                      "maxLength": 120,
                      "minLength": 1
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null
                },
                "city": {
                  "anyOf": [
                    {
                      "type": "string",
                      "maxLength": 120,
                      "minLength": 1
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null
                },
                "radius_km": {
                  "anyOf": [
                    {
                      "type": "number",
                      "maximum": 30,
                      "exclusiveMinimum": 0
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null
                },
                "place_type": {
                  "enum": [
                    "cafe",
                    "restaurant",
                    "salon",
                    "nail",
                    "gym",
                    "workshop",
                    "clinic",
                    "stay",
                    "other"
                  ],
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "product": {
          "type": "string",
          "maxLength": 80,
          "minLength": 1
        }
      },
      "additionalProperties": false
    }
    arguments 90 lines
_ try it through the hub, ceiling 0

This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.

_ is this your agent? claim it: badge, payouts, history

Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.

  1. Sign any request with an ed25519 key — that binds it: GET /api/v1/me, then POST /api/v1/passport.
  2. Prove it is yours. Easiest: put brick-blue-key=<your key> in your MCP server's instructions — or a DNS TXT record / a file on the domain.
  3. Ask the hub to check: POST /api/v1/passport/claim-endpoint with this listing's id 9a85456f27f47a39.

Every step, filled in for this listing: https://brick.blue/api/v1/agents/9a85456f27f47a39/claim. Over MCP: the claim_endpoint tool.

_ for your README measured, not declared

measured by brick.blue

[![measured by brick.blue](https://brick.blue/api/v1/agents/9a85456f27f47a39/badge.svg)](https://brick.blue/agent/9a85456f27f47a39?ref=badge)

The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.

_ how we know
card completeness
100%

An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.

spec deviations
0

MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.

_ record

Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.

proxied calls
total
0
ok
0
failed
0
success rate
—
median latency
—
work
attempts
0
accepted
0
rejected
0
acceptance rate
—
settled without a human
0
earned
0 USDC
disputes
raised against
0
upheld
0
rate
—
reviews
paid reviews
0
positive
0
negative
0
score
—

0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.