Skip to content

com.zipirapp/zipir

com.zipirapp/zipirzipirapp.comstreamable-httpv0.1.5Scanned

Turn documents into source-cited video lessons for safety, procedure and training teams.

8 tools: 1 can delete or cancel things, 1 change things and 6 only read.

Tools: 1 delete, 0 irreversible, 1 write, 6 read.
  • Reads private data · 1
  • Reads text others write · 1
  • Can send data out · 1
  • No findings

Sign-in required, OAuth metadata published. Remote posture

Anlyon alternative

2 of these tools change something. Run those as governed actions.

Declare what an action changes, and Anlyon puts it under a shared limit, binds every approval to the exact request, and grades the outcome. It works on any HTTPS API you can describe as an action.

Anlyon does not run, proxy or govern this MCP server. A tool your own code calls directly is not routed through Anlyon and is not governed by it.

Import an OpenAPI spec →

Tools

Grouped by what each tool does, most consequential first. Open one for its reasons and full description; descriptions are the publisher's own words.

8 tools

Deletes or cancels 1Claude Code: deny
  • approve_lessonApprove the storyboard and start rendering (the only call that spends the account's minutes) Use only after the user has seen the storyboard and agreed: this is the panel's approva…No findings

    Why it is in this group

    • The name "approve_lesson" says "approve": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Approve the storyboard and start rendering (the only call that spends the account's minutes) Use only after the user has seen the storyboard and agreed: this is the panel's approval button. The minutes for the lesson are held at this call and the render is queued. Do not approve on the user's behalf without their go-ahead. Check get_usage first if the balance may be tight.

    Annotations the server declares

    • title: Approve and render (spends minutes)
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
Changes things 1Claude Code: ask
  • create_lessonCreate a narrated video lesson from a document, text or web page (use when someone wants a document turned into a training, safety or procedure video) Use when the user brings a do…Reads text others writeCan send data outNo findings

    Why it is in this group

    • The name "create_lesson" says "create": a word for a change.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Create a narrated video lesson from a document, text or web page (use when someone wants a document turned into a training, safety or procedure video) Use when the user brings a document, a block of text or a web page and wants a video, a lesson, an explainer or a summary video of it. Accepted sources: a file (PDF, DOCX, PPTX, MD or TXT, max 50 MB) sent as multipart, which the local MCP server takes as `file_path`; plain `text` (max 5 MB); or a public http(s) `url` whose readable text becomes the document. Every on-screen sentence cites the source paragraph it came from, so use this when the user needs traceable training, safety or procedure videos. Narration is Turkish. Returns a lesson id immediately; nothing renders and no minutes are spent until approve_lesson. Follow it with get_lesson until the storyboard needs approval. With an Idempotency-Key the same request inside 24h returns the same lesson (same key, different body is 409). API documentation: https://zipirapp.com/en/api/

    Annotations the server declares

    • title: Create a lesson
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
Only reads 6Show 6 read-only tools
  • get_downloadGet a signed download link for the finished video (use when the video is ready and the user wants the file) Use once get_lesson says the video is done.Reads private dataNo findings

    Why it is in this group

    • The name "get_download" says "get": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "get" and "file": it reads files.
    Description, as the server wrote it
    Get a signed download link for the finished video (use when the video is ready and the user wants the file) Use once get_lesson says the video is done. Returns a URL (valid 900 s) to the MP4, not the file itself: hand the link to the user or fetch it. `variant=720` is the light copy every plan gets, `variant=1080` is full quality and needs a paid plan.

    Annotations the server declares

    • title: Get download link
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • get_lessonCheck a lesson's status (poll this after create_lesson and after approve_lesson) Use whenever you need to know where a lesson stands: after creating it, while it renders, or before…No findings

    Why it is in this group

    • The name "get_lesson" says "get": a word for reading.
    Description, as the server wrote it
    Check a lesson's status (poll this after create_lesson and after approve_lesson) Use whenever you need to know where a lesson stands: after creating it, while it renders, or before downloading. `status` is the machine state (queued | rendering | done | failed), `phase` is finer, `needs_approval` is true while the storyboard waits for a human, and `next` says which call to make next. Costs no minutes.

    Annotations the server declares

    • title: Get lesson status
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • get_usageCheck remaining video minutes before spending any (call this before approve_lesson if unsure) Use when the user asks how much is left, or before approve_lesson when the balance may…No findings

    Why it is in this group

    • The name "get_usage" says "get": a word for reading.
    Description, as the server wrote it
    Check remaining video minutes before spending any (call this before approve_lesson if unsure) Use when the user asks how much is left, or before approve_lesson when the balance may be tight. `remaining` is what this key can spend now: the account's own balance as the billing page shows it (plan minutes left plus bought packs, or the free trial plus packs), narrowed by the key's own monthly cap if it has one; never a second rule. `used` is this key's minutes in the current period (finished videos plus minutes held for its lessons still rendering); `limit` = used + remaining. approve_lesson answers 402 quota_exceeded when the lesson does not fit.

    Annotations the server declares

    • title: Get minute balance
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • list_formatsList video formats (call this before create_lesson when the user names a style) Use when someone asks which styles exist, or before create_lesson if they said a style ("short", "ex…No findings

    Why it is in this group

    • The name "list_formats" says "list": a word for reading.
    Description, as the server wrote it
    List video formats (call this before create_lesson when the user names a style) Use when someone asks which styles exist, or before create_lesson if they said a style ("short", "explainer", "vertical"). Returns format ids to pass to create_lesson; never hard-code an id, read it here. No minutes are spent.

    Annotations the server declares

    • title: List video formats
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • list_lessonsList this account's recent lessons (use when someone asks "my videos", "what did I make", or wants to continue an earlier one) Use when the user refers to their own earlier work: t…No findings

    Why it is in this group

    • The name "list_lessons" says "list": a word for reading.
    Description, as the server wrote it
    List this account's recent lessons (use when someone asks "my videos", "what did I make", or wants to continue an earlier one) Use when the user refers to their own earlier work: their videos, the lesson they started yesterday, the one waiting for approval. Returns the newest lessons with id, title, status, minutes and a link to open each. Read-only and free. Pass `status` to narrow (queued | rendering | done | failed) and `limit` (default 20, max 50).

    Annotations the server declares

    • title: List my lessons
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • list_voicesList narrator voices (call this before create_lesson when the user names a voice, a tone or a gender) Use when someone asks which voices exist, wants a female or male narrator, a c…No findings

    Why it is in this group

    • The name "list_voices" says "list": a word for reading.
    Description, as the server wrote it
    List narrator voices (call this before create_lesson when the user names a voice, a tone or a gender) Use when someone asks which voices exist, wants a female or male narrator, a calm or lively tone, or English narration. Returns each voice with its name, a one-sentence tone, language (tr or en), gender, accent, tier and a short audio sample. Pass a voice `key` to create_lesson. Optional `language` narrows the list. Premium voices spend 1.5x minutes. No minutes are spent here.

    Annotations the server declares

    • title: List narrator voices
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Exfil surface

Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.

1 path in this server alone from private data, through text someone else wrote, to a way out. Denying 1 outbound tool breaks every one.

Reads private data1
Reads files, mail, messages, databases, secrets, calendars or repositories.
Reads text others write1
Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
Can send data out1
Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
deny to break every path
{
  "permissions": {
    "deny": [
      "mcp__zipir__create_lesson"
    ]
  }
}

Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.

Remote posture

What anyone on the internet sees at the remote endpoint: an anonymous initialize and tools/list, and the public OAuth metadata.

Sign-in required, OAuth metadata published

Looked at Oct 31, 2026, 23:19 UTC, unchanged since Oct 31, 2026. No credentials were sent and no tool was called. What is looked at.

Reachable
yes
HTTP status of an anonymous initialize
401
tools/list served without credentials
no
Tools that change things, listed without credentials
0
Protocol version
not observed
WWW-Authenticate on 401
yes
resource_metadata in WWW-Authenticate
https://api.zipirapp.com/.well-known/oauth-protected-resource
RFC 9728 protected resource metadata
https://api.zipirapp.com/.well-known/oauth-protected-resource
Authorization servers
https://api.zipirapp.com
Legacy HTTP+SSE transport
no
Dynamic client registration
yes
Client ID metadata documents
no

Findings

Matches of fixed checks, with the text they matched.

No check matched anything in these tool definitions. That is not a safety guarantee.

History

Changes to its tool definitions and to its remote endpoint, newest first.

No change seen yet. Its tools are rescanned every day, and a remote endpoint is looked at once a week.

Install

Pinned to version 0.1.5. Values in angle brackets are yours to fill in.

claude mcp add --transport http zipir https://api.zipirapp.com/mcp
claude mcp add --transport http zipir https://api.zipirapp.com/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__zipir__list_formats",
      "mcp__zipir__list_voices",
      "mcp__zipir__list_lessons",
      "mcp__zipir__get_lesson",
      "mcp__zipir__get_download",
      "mcp__zipir__get_usage"
    ],
    "ask": [
      "mcp__zipir__create_lesson"
    ],
    "deny": [
      "mcp__zipir__approve_lesson"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as zipir. Review it before you use it.

Capability tags behind 2 rules
  • mcp__zipir__create_lesson untrusted-input, outbound
  • mcp__zipir__get_download private-data

Pin

Keep the decision: fail CI when the tools change, follow every change, or show a badge.

Pin in CI

Fail a build when the tools you reviewed are not the tools the server serves today.

curl -s "https://anlyon.dev/api/v1/servers/com.zipirapp/zipir/verify?hash=4309fca1072ab4be9c57170dd7bab4738ac4531be27e40e656febe41522e522a" | jq -e '.changed == false'

Pinned hash 4309fca1072a, from Nov 4, 2026, 17:18 UTC.

Watch

Get told when its tools change: a new tool, a new description, a new class.

https://anlyon.dev/servers/com.zipirapp/zipir/changes.xml

An Atom feed. Works in any feed reader or Slack's RSS app.

Badge

anlyon.dev badge for com.zipirapp/zipir
[![anlyon.dev](https://anlyon.dev/badge/com.zipirapp/zipir.svg)](https://anlyon.dev/servers/com.zipirapp/zipir)

Source: MCP Registry · repository. Synced Nov 4, 2026, 17:17 UTC.