# SlideMaster (npm · @slidemaster/mcp-server)

Create AI presentation videos with slides, narration, TTS audio, and MP4 export from any topic.

- Trust score: 66/100 (medium)
- Change this week: +19
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- npm · `@slidemaster/mcp-server`: 66/100 (this document), [markdown](https://verifymcp.io/servers/headdao-slidemaster-mcp/slidemaster-mcp-server.md), [page](https://verifymcp.io/servers/headdao-slidemaster-mcp/slidemaster-mcp-server)

## Channel facts

- Registry: `npm`
- Package: `@slidemaster/mcp-server`
- Version: `1.6.0`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, 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-08-03.

- **Supply Chain Security**: 86/100
  - No malware found by supply-chain analysis.
  - Only part of the dependency tree could be resolved (94 of 98), so this covers what we could see, not the whole tree.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (94 of 98), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 19/100
  - Repository check failed: no source repository is declared.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 146 days ago).
  - Security-disclosure policy not yet verified: we couldn't inspect the source repository.
- **Schema Quality & AI Usability**: 88/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).
  - Tool/resource definitions use about 2196 tokens (~81/item across 27 items; 27 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add headdao-slidemaster-mcp -- npx -y @slidemaster/mcp-server
```

### Codex

```bash
codex mcp add headdao-slidemaster-mcp -- npx -y @slidemaster/mcp-server
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "headdao-slidemaster-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@slidemaster/mcp-server"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add headdao-slidemaster-mcp --command npx --arg -y --arg @slidemaster/mcp-server
```

### Hermes

```yaml
mcp_servers:
  headdao-slidemaster-mcp:
    command: "npx"
    args: ["-y", "@slidemaster/mcp-server"]
```

### Other

```json
{
  "mcpServers": {
    "headdao-slidemaster-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@slidemaster/mcp-server"
      ]
    }
  }
}
```

## 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-08-03 (score 66, +25)

- [security regression] Provenance: unverified → fail
- [security improvement] Install scripts: unverified → pass
- [security improvement] Known CVEs: unverified → partial
- [functional improvement] Schema quality: unverified → excellent
- [functional improvement] Stability: unverified → 0.27
- [functional improvement] License: unverified → pass
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] Maintenance: unverified → pass
- [functional] Licence: MIT

### 2026-08-02 (score 41, +20)

- [security improvement] Malware scan: unverified → pass
- [security] Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window).
- [functional improvement] MCP protocol: unverified → pass

### 2026-07-31 (score 21, −8)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 29, −18)

- [security regression] Malware scan: pass → unverified

### 2026-07-27 (score 47)

First indexed and scored.

## MCP tools (27)

### `generate_outline` (~133 tokens)

Use this when the user wants to plan a presentation. Generates slide titles and descriptions from a topic. Automatically creates a project and returns project_id — no need to call create_project separately.

Input parameters:

- `language` (string): 'zh-TW' | 'zh-CN' | 'en' | 'ja' (default: 'zh-TW')
- `slides_count` (integer): Number of slides (default: 8)
- `style` (string): 'professional' | 'playful' | 'minimalist'
- `topic` (string, required): The topic or prompt, e.g. 'Introduction to Machine Learning'

### `create_project` (~80 tokens)

Use this to create a new empty project. Returns the project_id needed for all subsequent operations.

Input parameters:

- `description` (string): Optional project description
- `title` (string, required): Project title, e.g. 'Q3 Sales Report'
- `type` (string): 'traditional' (slides) or 'flow' (screen recording). Default: 'traditional'

### `upload_init` (~63 tokens)

Use this to upload an existing PPTX or PDF file. Returns a pre-signed upload URL and project_id.

Input parameters:

- `filename` (string, required): Original filename with extension, e.g. 'deck.pptx'
- `title` (string, required): Title for the uploaded presentation

### `upload_complete` (~43 tokens)

Use this after the file has been uploaded to the pre-signed URL. Triggers server-side processing.

Input parameters:

- `project_id` (string, required): Project ID returned from upload_init

### `analyze_style_image` (~72 tokens)

Upload a style reference image to analyze its visual style (colors, fonts, layout). Returns a style_guide object that can be passed to render_slides to apply this style to all slides.

Input parameters:

- `image_url` (string, required): Public URL of the style reference image (PNG, JPG, or any image URL)

### `render_slides` (~135 tokens)

Use this to generate AI slide images for a project. Each slide gets a background image from the AI model. Optionally pass a style_guide (from analyze_style_image) to apply a consistent visual style.

Input parameters:

- `image_size` (string): Resolution: '1K' | '2K' | '4K' (default: '2K')
- `project_id` (string, required): Target project ID
- `slides` (array, required): Array of {title, description} objects
- `style_guide` (object): Style guide object from analyze_style_image. Pass this to apply a consistent visual style to all slides.

### `generate_script` (~79 tokens)

Use this to generate a narration script for a single slide using AI.

Input parameters:

- `prompt_style` (string): 'professional' | 'casual' | 'educational' (default: 'professional')
- `regenerate` (boolean): Force regeneration if script exists (default: false)
- `slide_id` (string, required): Slide ID to generate a script for

### `batch_generate_scripts` (~93 tokens)

Use this to generate narration scripts for all slides in a project in one batch.

Input parameters:

- `project_id` (string, required): Project ID to generate scripts for
- `prompt_style` (string): 'professional' | 'casual' | 'educational'
- `regenerate` (boolean): Force regeneration if scripts exist (default: false)
- `slide_ids` (array): Optional subset of slide IDs; omit for all slides

### `generate_tts` (~140 tokens)

Use this to generate text-to-speech audio. Pass project_id for all slides or slide_id for one slide.

Input parameters:

- `project_id` (string): Project ID — generates TTS for all slides
- `slide_id` (string): Slide ID — generates TTS for one slide
- `speaking_rate` (number): Speed multiplier, e.g. 0.8 slower, 1.2 faster (default: 1.0)
- `tts_provider` (string): 'gemini' | 'cosyvoice' | 'azure'
- `voice_name` (string): Voice ID from the provider. Use list_voices to browse.

### `generate_video` (~108 tokens)

Use this as the final step to compile slides + audio into an MP4 video. Poll check_status afterward.

Input parameters:

- `force` (boolean): Force regeneration if video exists (default: false)
- `fps` (integer): Frames per second (default: 30)
- `project_id` (string, required): Project ID to generate video for
- `resolution` (array): [width, height], e.g. [1920, 1080] (default: [1920, 1080])

### `list_projects` (~48 tokens)

Use this when the user wants to see their existing projects. Returns a paginated project list.

Input parameters:

- `limit` (integer): Max results to return (default: 50, max: 100)

### `get_project` (~33 tokens)

Use this to retrieve detailed metadata and status for a specific project.

Input parameters:

- `project_id` (string, required): Project ID to retrieve

### `update_project` (~138 tokens)

Use this to update project settings like title, description, TTS provider, voice, or language.

Input parameters:

- `description` (string): New project description
- `project_id` (string, required): Project ID to update
- `title` (string): New project title
- `tts_language` (string): Language code, e.g. 'zh-TW', 'en'
- `tts_provider` (string): 'gemini' | 'cosyvoice' | 'azure'
- `tts_speaking_rate` (number): Speed multiplier (default: 1.0)
- `tts_voice` (string): Voice name/ID

### `delete_project` (~44 tokens)

Use this to permanently delete a project and all its slides, audio, and video. Do not use for archiving.

Input parameters:

- `project_id` (string, required): Project ID to delete

### `list_slides` (~42 tokens)

Use this to list all slides in a project with their titles, scripts, and render status.

Input parameters:

- `project_id` (string, required): Project ID to list slides for

### `update_slide` (~54 tokens)

Use this to edit a slide's title or narration script text.

Input parameters:

- `script` (string): New narration script text
- `slide_id` (string, required): Slide ID to update
- `title` (string): New slide title

### `delete_slide` (~32 tokens)

Use this to permanently remove a single slide from a project.

Input parameters:

- `slide_id` (string, required): Slide ID to delete

### `check_status` (~39 tokens)

Use this to poll processing progress after triggering render, TTS, or video generation.

Input parameters:

- `project_id` (string, required): Project ID to check status for

### `export_project` (~39 tokens)

Use this to get download URLs for all generated assets: slides, audio, and video files.

Input parameters:

- `project_id` (string, required): Project ID to export

### `export_pdf` (~50 tokens)

Export all rendered slides as a single PDF file. Returns a download URL for the PDF (16:9 landscape, one slide per page).

Input parameters:

- `project_id` (string, required): Project ID to export as PDF

### `export_pptx` (~45 tokens)

Export all rendered slides as a single PPTX (PowerPoint) file. Returns a download URL.

Input parameters:

- `project_id` (string, required): Project ID to export as PPTX

### `export_evercam` (~58 tokens)

Export project as an EverCam offline HTML5 playable package (ZIP). Requires video to be generated first. This is async — call evercam_status to poll progress.

Input parameters:

- `project_id` (string, required): Project ID to export as EverCam

### `evercam_status` (~48 tokens)

Poll EverCam export progress. Returns status (processing/completed/failed/not_started) and download_url when completed.

Input parameters:

- `project_id` (string, required): Project ID to check EverCam export status

### `list_voices` (~54 tokens)

Use this to browse available TTS voices across all providers before generating audio.

Input parameters:

- `provider` (string): Filter by provider: 'gemini' | 'cosyvoice' | 'azure'. Omit for all providers.

### `get_credit_balance` (~62 tokens)

Check remaining API credits before starting expensive operations. Call this before large projects (>10 slides) to avoid mid-job failures. 1 complete 25-slide course costs ~3,980 credits (render 3,500 + TTS 400 + video 80).

### `get_project_context` (~66 tokens)

Get a complete snapshot of a project in one call: metadata, all slides with script/audio status, progress summary, and what to do next. Call this after any long-running operation to orient yourself before deciding the next action.

Input parameters:

- `project_id` (string, required): Project ID to inspect

### `topic_to_video` (~238 tokens)

Use this for one-click presentation creation from a topic. Default: slides only. Set include_scripts=true for narration, include_video=true for full MP4. Poll check_status afterward.

Input parameters:

- `image_size` (string): Resolution: '1K' | '2K' | '4K' (default: '2K')
- `include_scripts` (boolean): Generate narration scripts (default: false)
- `include_video` (boolean): Generate TTS + compile MP4, implies include_scripts (default: false)
- `language` (string): 'zh-TW' | 'zh-CN' | 'en' | 'ja' (default: 'zh-TW')
- `slides_count` (integer): Number of slides (default: 8)
- `style` (string): 'professional' | 'playful' | 'minimalist'
- `topic` (string, required): The topic, e.g. 'Introduction to Machine Learning'
- `tts_provider` (string): 'gemini' | 'cosyvoice' | 'azure'
- `tts_voice` (string): Voice name/ID from the chosen provider

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/headdao-slidemaster-mcp/slidemaster-mcp-server#diagnostics

## Score history

- 2026-08-03: 66
- 2026-08-02: 41
- 2026-08-01: 21
- 2026-07-31: 21
- 2026-07-30: 29
- 2026-07-28: 47
- 2026-07-27: 47

## Links

- npm package: https://www.npmjs.com/package/@slidemaster/mcp-server
- Socket report: https://socket.dev/npm/package/@slidemaster/mcp-server
- Website: https://slidemaster.tw/
- Changelog RSS feed: https://verifymcp.io/servers/headdao-slidemaster-mcp/slidemaster-mcp-server/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/headdao-slidemaster-mcp/slidemaster-mcp-server/changelog.json
- HTML version of this page: https://verifymcp.io/servers/headdao-slidemaster-mcp/slidemaster-mcp-server
