Skip to main content

Lunara

io.github.DarkMatteros/lunaraVersion 1.0.1

Subtitle engine for AI agents: one upload gives a written track and a translation, timings exact.

Status

Responds306 msAnswered our handshake without sign-in.

Registry data may be out of date

We could not refresh it, so this page shows the last copy.
Last checked
Nov 14, 2026, 14:37 UTC
Latency
306 ms
Remotes responding
1 of 1
Sign-in
API key
Hosting
Hosted outside the EU (detected)
Registry data as of
Nov 14, 2026, 22:14 UTC

Data from the official MCP Registry, checked by run.zero. How we check

Connect

Streamable HTTP
https://lunaraai.cc/mcpResponds306 ms
No sign-in

Claude Code

claude mcp add --transport http lunara https://lunaraai.cc/mcp --header 'Authorization: Bearer <YOUR_TOKEN>'

Replace <YOUR_TOKEN> before running.

Claude Desktop and claude.ai

Settings > Connectors > Add custom connector
Name: lunara
Remote MCP server URL: https://lunaraai.cc/mcp
This server expects the header Authorization.

Cursor

{
  "mcpServers": {
    "lunara": {
      "url": "https://lunaraai.cc/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_TOKEN>"
      }
    }
  }
}

Replace <YOUR_TOKEN> before running.

VS Code

code --add-mcp '{"name":"lunara","type":"http","url":"https://lunaraai.cc/mcp","headers":{"Authorization":"Bearer <YOUR_TOKEN>"}}'

Replace <YOUR_TOKEN> before running.

Built your own server? run.zero hosts MCP servers on European infrastructure.

Host your own MCP server on run.zero

Tools

22 tools

Tools of Lunara
Read-only
Idempotent
Open world
lunara_finish_uploadTell Lunara the bytes are uploaded so the pipeline can start. Returns the job id to poll with lunara_get_job.NoNoYesNo
lunara_get_coverageReport how much of the source timeline the subtitles cover, and list suspicious gaps longer than a second. Use before shipping a long video.NoYesYesNo
lunara_get_glossaryReturn the proper nouns Lunara has learned for this org, so names are spelled consistently across tracks.NoYesYesNo
lunara_get_jobReturn the state of a subtitle job: status, progress, whether the SRT is ready, and how many cues it has. Poll this after lunara_upload_video.NoYesYesNo
lunara_get_queueHow many transcription jobs are running and whether a new one can be accepted. Call this before lunara_start_subtitle_job or lunara_subtitle_from_url if you are submitting several jobs — when saturated, wait the retryAfterSeconds rather than retrying immediately.NoYesYesNo
lunara_get_srtReturn the subtitle file for a finished job. One line per cue. Use track="secondary" for the translated track (English by default).NoYesYesNo
lunara_glossary_extractFind candidate proper nouns in a job’s cues, ranked by frequency, with the first cue they appear in. Suggestions for a glossary, not corrections — nothing is rewritten.NoYesYesNo
lunara_guideReturns a step-by-step guide written to be read by a human, not by you. Call this when someone asks "how do I use this", "what can it do", "how do I get started", or when you need to explain the workflow rather than execute it. Pass journey="first_subtitle" for the end-to-end path, "api_key" for credential setup, "languages" for what is supported, or "limits" for what it cannot do. Answer the person with this text rather than paraphrasing from memory.NoYesYesNo
lunara_list_cuesReturn subtitle cues for a job as timestamps plus text, so you can inspect or reference individual lines before proposing edits.NoYesYesNo
lunara_list_toolsReturn every subtitle tool Lunara exposes, with the minutes each one costs. Call this first when you are unsure which tool fits.NoYesYesNo
lunara_next_stepTell me what to call next. Given a jobId (or nothing), returns ready-to-paste tool calls with the exact arguments, plus one line of why. Use this when you are unsure of the order — or just read the "next" array that every mutating tool already returns. Free.NoYesYesNo
lunara_probe_mediaReturn duration, dimensions, codecs and container for a URL, plus whether the audio is mono 16 kHz already. Call this before choosing an ASR engine.NoYesYesYes
lunara_qa_contractRun the contract gate over both tracks: ASR text and timings byte-exact, cue length bounds, no empty cues. Returns pass/fail per rule. Free, because refusing a broken track should never cost the caller money.NoYesYesNo
lunara_readabilityPer-cue reading speed, displayed length and characters-per-second, with the cues that exceed comfortable limits. Mirrors the metrics shown in the editor.NoYesYesNo
lunara_rewriteTurn spoken Cantonese cue text into written Chinese. Every cue boundary and timestamp is preserved. Deliberate mispronunciations are never corrected, and proper nouns are protected.NoNoYesNo
lunara_segmentApproximate split, not audio-grounded segmentation: cue text is divided at clause punctuation and each piece receives a share of the original span proportional to its character count. The words are not changed. Timings are estimated, so treat them as a reading aid rather than a re-alignment — use lunara_start_subtitle_job if you need timing derived from the audio.NoNoYesNo
lunara_start_subtitle_jobRun the full eight-layer subtitle pipeline on an audio or video URL you can already host. Produces a written-language track and a translated track. Prefer lunara_upload_video when the file is local.NoNoNoYes
lunara_subtitle_from_urlStart a persisted subtitle job from a URL you already host — no upload needed. Returns a job id; poll lunara_get_job every 15–30 s until status is "completed", then call lunara_get_srt. Prefer this over lunara_upload_video whenever the media is reachable by URL.NoNoNoYes
lunara_transcribeRun speech recognition only — no rewrite, no translation. Returns timed segments. Use this when you want the transcript itself, or when you plan to pick a later stage yourself.NoNoYesYes
lunara_translateTranslate the text of an existing job’s cues into another language. Every cue boundary and timestamp is preserved; only the text changes. Use this instead of translating yourself so the timing contract holds.NoNoYesNo
lunara_upload_videoReserve an upload slot and return the object key plus a signed URL per part. After uploading the bytes call lunara_finish_upload. Use this for a file you hold locally.NoNoNoNo
lunara_whoamiReturn the organisation, user, plan and remaining balance behind the credential you are using. Call this FIRST when someone is unsure which account will be charged, or after they say the work went to the wrong account. Every other tool bills the organisation reported here.NoYesYesNo

Details

Registry status
Active
Published
Oct 29, 2026
Updated
Oct 29, 2026
Categories (suggested)
Design and mediaSuggested categories are assigned automatically from the registry text and may be wrong. Verified operators can correct them.
GDPR
Not declared

Are you the operator? Claim this listing