# Slidefast (pypi · slidefast-mcp)

Create, edit, export and publish social carousels from your Slidefast account.

- Trust score: 56/100 (low)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-20

## Components

- remote · `mcp.slidefast.io`: 36/100, [markdown](https://verifymcp.io/servers/io-slidefast-slidefast/mcp.md), [page](https://verifymcp.io/servers/io-slidefast-slidefast/mcp)
- pypi · `slidefast-mcp`: 56/100 (this document), [markdown](https://verifymcp.io/servers/io-slidefast-slidefast/slidefast-mcp.md), [page](https://verifymcp.io/servers/io-slidefast-slidefast/slidefast-mcp)

## Channel facts

- Registry: `pypi`
- Package: `slidefast-mcp`
- Version: `0.2.1`
- 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-09-20.

- **Supply Chain Security**: 50/100
  - Malware scan not yet available for this package.
  - No known CVEs affecting this package version or its production dependencies.
  - Runs hatchling.build at install time, a recognised native-build step with no shell scripting around it.
  - 0 of 29 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 6/100
  - Repository check failed: no source repository is declared.
  - Provenance check failed: no build-provenance attestation is published.
  - License check failed: the license (MIT License) isn't a recognized OSI-approved license.
  - Actively maintained (last published 16 days ago).
  - Security-disclosure policy not yet verified: we couldn't inspect the source repository.
- **Schema Quality & AI Usability**: 77/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 5664 tokens (~113/item across 50 items; 50 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 57/100
  - Stability observed for 17 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.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Tool Safety**: 97/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - 7 of 8 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "slidefast_get_tiktok_publish_status" implies "publish" and declares readOnlyHint instead, contradicting what its own name says it does.
  - An AI judge read all 50 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

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

Slidefast runs locally as a PyPI package, launched with uvx slidefast-mcp. 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 io-slidefast-slidefast -- uvx slidefast-mcp
```

### Cursor

```json
{
  "mcpServers": {
    "io-slidefast-slidefast": {
      "command": "uvx",
      "args": [
        "slidefast-mcp"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "io-slidefast-slidefast": {
      "command": "uvx",
      "args": [
        "slidefast-mcp"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add io-slidefast-slidefast -- uvx slidefast-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "io-slidefast-slidefast": {
      "type": "local",
      "command": [
        "uvx",
        "slidefast-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add io-slidefast-slidefast --command uvx --arg slidefast-mcp
```

### Hermes

```yaml
mcp_servers:
  io-slidefast-slidefast:
    command: "uvx"
    args: ["slidefast-mcp"]
```

### Netclaw

```json
{
  "McpServers": {
    "io-slidefast-slidefast": {
      "Transport": "stdio",
      "Command": "uvx",
      "Arguments": [
        "slidefast-mcp"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add io-slidefast-slidefast -t stdio -c uvx -a slidefast-mcp
```

### Other

```json
{
  "mcpServers": {
    "io-slidefast-slidefast": {
      "command": "uvx",
      "args": [
        "slidefast-mcp"
      ]
    }
  }
}
```

## 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-09-20 (score 56, +1)

No change was recorded against any check on this day. Stability & Change Management went from 53 to 57. That category is still filling its 30-day observation window: 16 days of observed history at the previous scan, 17 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-18 (score 55, +1)

No change was recorded against any check on this day. Stability & Change Management went from 47 to 50. That category is still filling its 30-day observation window: 14 days of observed history at the previous scan, 15 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-17 (score 54, −15)

- [security regression] Malware scan: pass → unverified

### 2026-09-16 (score 69, +16)

- [security improvement] Malware scan: unverified → pass

### 2026-09-15 (score 53, −15)

- [security regression] Malware scan: pass → unverified

### 2026-09-14 (score 68, +15)

- [security improvement] Malware scan: unverified → pass

### 2026-09-13 (score 53, −14)

- [security regression] Malware scan: pass → unverified

### 2026-09-12 (score 67, +15)

- [security improvement] Malware scan: unverified → pass

## MCP tools (50)

### `slidefast_list_projects` (~97 tokens)

List projects

List the account's projects (one workspace per client).

Presentations, themes, brand kits and social accounts all live inside a
project. Pass a project id to any list or create tool to work in it; every
other tool addresses rows by id and needs no project.

Returns:
    Projects with id, name, slug, is_default, archived_at and counts

Input parameters:

- `include_archived` (boolean): Include archived projects

Output parameters:

- `result` (array)

### `slidefast_create_project` (~62 tokens)

Create project

Create a project. Solo plans get 1 project, Agency up to 25.

Input parameters:

- `color`: Optional hex colour for the UI, e.g. #2563eb
- `name` (string, required): Project name, e.g. the client's name

### `slidefast_get_active_project` (~101 tokens)

Get active project

Show which project a call with these settings would act in.

Use this to confirm scope before creating anything, especially when the key
may be pinned to one client.

Input parameters:

- `project_id`: Optional project (client workspace) UUID this call acts in. Get one from slidefast_list_projects. Leave unset for the account's default project. Ignored when the API key is pinned to a project; passi…

### `slidefast_check_rate_limit` (~70 tokens)

Check rate limit

Check your current API rate limit status.

Returns information about your daily and monthly API usage limits,
current usage, and remaining quota.

Returns:
    Dict with:
    - limits: Your rate limits (daily, monthly)
    - usage: Current usage counts
    - remaining: Remaining quota

### `slidefast_list_presentations` (~146 tokens)

List carousels

List presentations in one project.

Input parameters:

- `limit` (integer): Items per page, 1-100
- `order` (string): Sort order: asc or desc
- `page` (integer): Page number, starting at 1
- `project_id`: Optional project (client workspace) UUID this call acts in. Get one from slidefast_list_projects. Leave unset for the account's default project. Ignored when the API key is pinned to a project; passi…
- `sort` (string): Sort field: updated_at or created_at
- `tags`: Optional list of tags to filter by with AND logic

### `slidefast_create_presentation` (~223 tokens)

Create carousel

Create a new presentation.

Creates an empty presentation that you can then populate with slides
using the chat tool or by providing slides directly.

Returns:
    Created presentation data including id, title, slides, theme, and timestamps

Input parameters:

- `description`: Optional description
- `display_settings`: Optional display settings object. Accepts a native object or legacy JSON string.
- `project_id`: Optional project (client workspace) UUID this call acts in. Get one from slidefast_list_projects. Leave unset for the account's default project. Ignored when the API key is pinned to a project; passi…
- `scheduled_date`: Optional scheduled date in YYYY-MM-DD format
- `slides`: Optional slide objects. Accepts a native array or legacy JSON string.
- `status`: Optional status: draft, scheduled, or published
- `tags`: Optional presentation tags
- `theme`: Optional theme object. Accepts a native object or legacy JSON string.
- `title` (string, required): Title of the presentation

### `slidefast_get_presentation_tags` (~79 tokens)

List carousel tags

Get all distinct tags used by the project's presentations.

Input parameters:

- `project_id`: Optional project (client workspace) UUID this call acts in. Get one from slidefast_list_projects. Leave unset for the account's default project. Ignored when the API key is pinned to a project; passi…

Output parameters:

- `result` (array)

### `slidefast_get_presentation` (~66 tokens)

Get carousel

Get a presentation by its ID.

Retrieves the full presentation including all slides, theme, and settings.

Returns:
    Presentation data including id, title, description, slides, theme, display_settings, and timestamps

Input parameters:

- `presentation_id` (string, required): UUID of the presentation

### `slidefast_update_presentation` (~168 tokens)

Update carousel

Update an existing presentation.

You can update any combination of: title, description, slides, theme, or display settings.
Only the fields you provide will be updated.

Returns:
    Updated presentation data

Input parameters:

- `description`: New description
- `display_settings`: Display settings object
- `presentation_id` (string, required): UUID of the presentation
- `scheduled_date`: Optional scheduled date in YYYY-MM-DD format, or null via API is not supported by this tool
- `slides`: Slide objects to replace all slides. Accepts a native array or legacy JSON string.
- `status`: Optional status: draft, scheduled, or published
- `tags`: Presentation tags to replace existing tags
- `theme`: Theme object for new theme configuration
- `title`: New title

### `slidefast_duplicate_presentation` (~87 tokens)

Duplicate carousel

Duplicate a presentation into a project.

Input parameters:

- `presentation_id` (string, required): UUID of the presentation
- `project_id`: Optional project (client workspace) UUID this call acts in. Get one from slidefast_list_projects. Leave unset for the account's default project. Ignored when the API key is pinned to a project; passi…

### `slidefast_delete_presentation` (~50 tokens)

Delete carousel

Delete a presentation.

Permanently deletes the presentation and all associated data.
This action cannot be undone.

Returns:
    Confirmation message

Input parameters:

- `presentation_id` (string, required): UUID of the presentation

### `slidefast_enable_share` (~34 tokens)

Enable share link

Enable public sharing and return the share token and URL path.

Input parameters:

- `presentation_id` (string, required): UUID of the presentation

### `slidefast_disable_share` (~29 tokens)

Disable share link

Disable public sharing for a presentation.

Input parameters:

- `presentation_id` (string, required): UUID of the presentation

### `slidefast_generate_share_metadata` (~57 tokens)

Generate share metadata

Generate social metadata for sharing a presentation.

Input parameters:

- `language`: Optional language for generated metadata
- `platforms`: Optional platforms, e.g. ['linkedin', 'instagram']
- `presentation_id` (string, required): UUID of the presentation

### `slidefast_update_share_metadata` (~61 tokens)

Update share metadata

Manually update social metadata for one platform.

Input parameters:

- `description` (string, required): Social description
- `platform` (string, required): Platform key to update
- `presentation_id` (string, required): UUID of the presentation
- `title` (string, required): Social title

### `slidefast_chat` (~498 tokens)

Write or edit slides with AI

Ask the AI to write or edit the deck. Read the mode rule before calling.

\**default mode is a dry run for EDITS, but a CREATE still creates.**

\- `mode="default"` (the default): edits to existing slides come back as
  \`suggestions[]` and are NOT saved. Show them to the user, then re-send the
  same message with `mode="apply"` to commit.
\- `mode="apply"`: the edits are written to the deck immediately and come
  back as `changes[]` (`type` is add, modify, delete or reorder).
\- The one exception: when the turn writes a WHOLE deck ("make me a carousel
  about X"), that deck is saved even in default mode, because a creation is
  not a proposal. You will see `slides_generated: true`.

Each turn costs one AI message against the account's monthly quota in both
modes, so do not re-run a turn just to see the result twice.

Returns (default mode):
    message_id, content, suggestions, citations, hooks, slides_generated,
    slides, model
Returns (apply mode):
    message_id, content, presentation, changes, warnings, hooks, model

Input parameters:

- `custom_instructions`: Custom instructions for the AI (e.g., 'Use simple language')
- `emoji_mode` (boolean): Whether to generate with emoji mode
- `enable_search` (boolean): Enable web search for additional context (default: True)
- `hook_categories`: Optional viral hook categories
- `language`: Language for generated content (e.g., 'English', 'French')
- `message` (string, required): Your message/prompt to the AI. Can be a request to generate slides, modify existing slides, or ask questions about presentations.
- `mode` (string): 'default' proposes edits without saving them (returns suggestions[]); 'apply' writes them to the deck (returns changes[]). Creating a whole deck saves in either mode.
- `presentation_id` (string, required): UUID of the presentation
- `slide_count`: Optional target slide count, 3-30
- `slides_context`: Optional current slides state. Accepts a native array or legacy JSON string.
- `target_audience`: Target audience description (e.g., 'startup founders')
- `writing_style`: Writing style preference (e.g., 'professional', 'casual')

### `slidefast_get_chat_history` (~109 tokens)

Get chat history

Get the conversation history for a presentation.

Retrieves past chat messages between you and the AI for the specified
presentation, useful for understanding context.

Returns:
    Chat history with:
    - messages: List of message objects with id, role, content, suggestions, timestamps
    - total: Total number of messages

Input parameters:

- `limit` (integer): Maximum number of messages to return (1-100, default: 50)
- `presentation_id` (string, required): UUID of the presentation

### `slidefast_clear_chat_history` (~31 tokens)

Clear chat history

Clear the conversation history for a presentation.

Input parameters:

- `presentation_id` (string, required): UUID of the presentation

### `slidefast_translate_slides` (~46 tokens)

Translate slides

Translate slides to a target language.

Input parameters:

- `slides` (required): Slides to translate. Accepts a native array or legacy JSON string.
- `target_language` (string, required): Target language

### `slidefast_export_png_zip` (~102 tokens)

Export slides as a PNG zip

Export all slides as a ZIP file containing PNG images.

Each slide is exported as a separate PNG image in the ZIP file.
Useful for sharing slides on social media or including in documents.

Returns:
    Dict with:
    - url: Download URL for the ZIP file
    - filename: Name of the file
    - size: Size in bytes
    - content_type: MIME type

Input parameters:

- `presentation_id` (string, required): UUID of the presentation

### `slidefast_export_pdf` (~91 tokens)

Export carousel as PDF

Export all slides as a single PDF document.

Creates a professional PDF with all slides, suitable for
printing or sharing as a document.

Returns:
    Dict with:
    - url: Download URL for the PDF file
    - filename: Name of the file
    - size: Size in bytes
    - content_type: MIME type

Input parameters:

- `presentation_id` (string, required): UUID of the presentation

### `slidefast_export_slide_png` (~117 tokens)

Export one slide as PNG

Export a single slide as a PNG image.

Exports one specific slide as a high-quality PNG image.
Useful for sharing individual slides or using as images.

Returns:
    Dict with:
    - url: Download URL for the PNG image
    - filename: Name of the file
    - size: Size in bytes
    - content_type: MIME type

Input parameters:

- `presentation_id` (string, required): UUID of the presentation
- `slide_number` (integer, required): Slide number to export (1-indexed, first slide is 1)

### `slidefast_list_themes` (~104 tokens)

List themes

List themes available in one project.

Input parameters:

- `limit` (integer): Items per page, 1-100
- `page` (integer): Page number, starting at 1
- `project_id`: Optional project (client workspace) UUID this call acts in. Get one from slidefast_list_projects. Leave unset for the account's default project. Ignored when the API key is pinned to a project; passi…

### `slidefast_create_theme` (~91 tokens)

Create theme

Create a theme in one project.

Input parameters:

- `project_id`: Optional project (client workspace) UUID this call acts in. Get one from slidefast_list_projects. Leave unset for the account's default project. Ignored when the API key is pinned to a project; passi…
- `theme` (required): Theme object. Accepts a native object or legacy JSON string.

### `slidefast_get_brand_kit` (~111 tokens)

Get brand kit

Get the project's brand kit: colours, fonts and logos.

Read this before creating a theme or a deck for a client so the output
matches their identity. Returns null when the project has no brand kit.

Input parameters:

- `project_id`: Optional project (client workspace) UUID this call acts in. Get one from slidefast_list_projects. Leave unset for the account's default project. Ignored when the API key is pinned to a project; passi…

Output parameters:

- `result`

### `slidefast_get_theme` (~28 tokens)

Get theme

Get a theme by ID.

Input parameters:

- `theme_id` (string, required): UUID of the theme

### `slidefast_update_theme` (~44 tokens)

Update theme

Update a theme.

Input parameters:

- `theme` (required): Theme update object. Accepts a native object or legacy JSON string.
- `theme_id` (string, required): UUID of the theme

### `slidefast_delete_theme` (~26 tokens)

Delete theme

Delete a theme.

Input parameters:

- `theme_id` (string, required): UUID of the theme

### `slidefast_duplicate_theme` (~86 tokens)

Duplicate theme

Duplicate a theme into one project.

Input parameters:

- `project_id`: Optional project (client workspace) UUID this call acts in. Get one from slidefast_list_projects. Leave unset for the account's default project. Ignored when the API key is pinned to a project; passi…
- `theme_id` (string, required): UUID of the theme

### `slidefast_set_default_theme` (~88 tokens)

Set default theme

Set a theme as the project's default.

Input parameters:

- `project_id`: Optional project (client workspace) UUID this call acts in. Get one from slidefast_list_projects. Leave unset for the account's default project. Ignored when the API key is pinned to a project; passi…
- `theme_id` (string, required): UUID of the theme

### `slidefast_list_library_images` (~48 tokens)

List library images

List images in the authenticated user's library.

Input parameters:

- `limit` (integer): Items per page, 1-100
- `page` (integer): Page number, starting at 1

### `slidefast_search_library_images` (~43 tokens)

Search library images

Search library images by semantic similarity.

Input parameters:

- `limit` (integer): Maximum results, 1-50
- `query` (string, required): Semantic image search query

### `slidefast_upload_library_image` (~76 tokens)

Upload library image

Upload a base64-encoded image to the user's library.

Input parameters:

- `content_type` (string): Image content type
- `filename` (string, required): Original filename, e.g. image.png
- `image_base64` (string, required): Base64-encoded image bytes
- `language` (string): Language for AI image description

### `slidefast_generate_background_image` (~128 tokens)

Generate a background image with AI

Generate AI background photos (no text, no faces) and add them to the library.

Returns `{"images": [{"id", "url"}]}`; use a returned URL as a slide's
\`backgroundImage`. Each image costs one asset-quota unit.

Input parameters:

- `n` (integer): Number of variants, 1-3
- `prompt` (string, required): Scene to photograph, e.g. 'neon Shanghai skyline at night'
- `style` (string): Style preset: night-city, desk-flatlay, study-notebook, abstract-texture, or custom

### `slidefast_delete_library_image` (~31 tokens)

Delete library image

Delete an image from the library.

Input parameters:

- `image_id` (string, required): UUID of the library image

### `slidefast_upload_presentation_image` (~65 tokens)

Upload an image to a carousel

Upload a base64-encoded image for use in presentations.

Input parameters:

- `content_type` (string): Image content type
- `filename` (string, required): Original filename, e.g. image.png
- `image_base64` (string, required): Base64-encoded image bytes

### `slidefast_get_social_connections` (~413 tokens)

List connected social accounts

Check which social platforms are connected and where you may publish.

ALWAYS call this before publishing: it tells you whether a platform is
connected and gives you the exact target identifiers the publish tools
expect.

Returns one block per platform (no access tokens are ever included):
\- linkedin: `targets` with `destination_type` ("profile" or "organization")
  and `organization_id` for Pages.
\- tiktok: `accounts`, plus `creator_info.privacy_level_options` — the only
  values a DIRECT_POST may use — and `direct_post_available`.
\- meta: `targets` with the `destination_id` to pass through, prefixed
  \`facebook_page:` or `instagram:`.

A user can connect SEVERAL accounts per platform. Every block carries an
\`accounts` array (each entry has an `account_id`, the targets it owns and,
for TikTok, its own `creator_info`/`direct_post_available`), and every flat
\`target` repeats the `account_id` that owns it. When more than one account
is listed, ask the user which one to publish from and pass that `account_id`
to the publish tool — omitting it silently uses the most recently connected
account.

Social accounts belong to a project, so an agency reads a different set of
connections per client. Pass the same `project_id` you publish with.

A platform that is not connected returns `connected: false` and a
\`connect_url`. OAuth cannot be done through the API or this MCP server — the
account owner has to open that URL in a browser and click Connect. Report
the URL to the user instead of trying to authenticate.

Input parameters:

- `project_id`: Optional project (client workspace) UUID this call acts in. Get one from slidefast_list_projects. Leave unset for the account's default project. Ignored when the API key is pinned to a project; passi…

### `slidefast_publish_linkedin` (~391 tokens)

Publish to LinkedIn

Publish a carousel to LinkedIn. THIS GOES PUBLIC — there is no draft mode.

The post appears on the member's feed or the Page as soon as the render and
upload finish, so confirm with the user before calling. LinkedIn has no
inbox/draft equivalent of TikTok's MEDIA_UPLOAD.

Call `slidefast_get_social_connections` first for the available targets. When
it lists more than one LinkedIn account, ask which one and pass its
\`account_id`.

Returns immediately with a social post record whose `status` is `pending` —
poll `slidefast_get_social_post` until it becomes `published` or `failed`.

Input parameters:

- `account_id`: Which connected LinkedIn account to publish from, from slidefast_get_social_connections; defaults to the most recent. For destination_type=organization this selects the Pages admin connection that ad…
- `commentary` (string): Post text above the document, up to 3000 characters
- `destination_type` (string): 'profile' to post as the member, 'organization' for a Page
- `idempotency_key`: Reuse the same key to make a retry safe instead of double-posting
- `is_reshare_disabled` (boolean): Prevent other members from resharing the post
- `organization_id`: Numeric LinkedIn Page id, required when destination_type=organization
- `presentation_id` (string, required): UUID of the presentation
- `project_id`: Optional project (client workspace) UUID this call acts in. Get one from slidefast_list_projects. Leave unset for the account's default project. Ignored when the API key is pinned to a project; passi…
- `title` (string, required): Document title shown on the LinkedIn post
- `visibility` (string): PUBLIC or CONNECTIONS. Pages must be PUBLIC.

### `slidefast_publish_tiktok` (~463 tokens)

Publish to TikTok

Publish a carousel to TikTok as a photo post — DRAFT by default.

mode="MEDIA_UPLOAD" (the default) is SAFE: the slides are delivered to the
creator's TikTok inbox as a draft. Nothing is published; the user finishes
and posts it from the TikTok app.

mode="DIRECT_POST" GOES PUBLIC IMMEDIATELY. Only pass it when the user asked
for it explicitly, and pass a `privacy_level` taken from
\`creator_info.privacy_level_options` (also set `disable_comment=true` when
\`creator_info.comment_disabled` is true), otherwise the call is rejected.

Returns a social post record; poll `slidefast_get_social_post`, or
\`slidefast_get_tiktok_publish_status` for TikTok's own view.

Input parameters:

- `account_id`: Which connected TikTok account to use; defaults to the most recent
- `auto_add_music` (boolean): Let TikTok add background music to the photo post
- `brand_content_toggle` (boolean): Declare the post as paid partnership / branded content
- `brand_organic_toggle` (boolean): Declare the post as promoting the creator's own brand
- `description` (string): Post description / caption, up to 4000 characters
- `disable_comment` (boolean): Turn comments off. Required when the account disables them.
- `idempotency_key`: Reuse the same key to make a retry safe instead of double-posting
- `mode` (string): MEDIA_UPLOAD (default) uploads a DRAFT to the creator's TikTok inbox — nothing becomes public. DIRECT_POST publishes it live immediately; only use it when the user explicitly asks.
- `presentation_id` (string, required): UUID of the presentation
- `privacy_level`: Required for DIRECT_POST. Must be one of creator_info.privacy_level_options from slidefast_get_social_connections.
- `project_id`: Optional project (client workspace) UUID this call acts in. Get one from slidefast_list_projects. Leave unset for the account's default project. Ignored when the API key is pinned to a project; passi…
- `title` (string): Photo post title, up to 90 characters

### `slidefast_publish_meta` (~305 tokens)

Publish to Facebook or Instagram

Publish a carousel to a Facebook Page or Instagram. THIS GOES PUBLIC.

One tool for both networks, selected by the `destination_id` prefix. Neither
has a draft mode here: the post is live once the background job finishes, so
confirm with the user before calling. Instagram carousels are capped at 10
slides.

When `slidefast_get_social_connections` lists more than one Meta account, ask
which one and pass its `account_id` alongside a `destination_id` it owns.

Returns a social post record; poll `slidefast_get_social_post`.

Input parameters:

- `account_id`: Which connected Meta login to publish from, from slidefast_get_social_connections; defaults to the most recent. It must be the account that manages destination_id.
- `caption` (string): Post caption, up to 2200 characters
- `destination_id` (string, required): Target from slidefast_get_social_connections: 'facebook_page:<id>' or 'instagram:<id>'. The prefix decides the platform.
- `idempotency_key`: Reuse the same key to make a retry safe instead of double-posting
- `presentation_id` (string, required): UUID of the presentation
- `project_id`: Optional project (client workspace) UUID this call acts in. Get one from slidefast_list_projects. Leave unset for the account's default project. Ignored when the API key is pinned to a project; passi…

### `slidefast_list_social_posts` (~152 tokens)

List social posts

List publish attempts, newest first.

Every attempt is recorded whether it succeeded or not, with its status,
destination, `social_account_id`, external post URL and any error message.

Input parameters:

- `account_id`: Only attempts published from this connected account
- `limit` (integer): Maximum attempts to return, 1-200
- `project_id`: Optional project (client workspace) UUID this call acts in. Get one from slidefast_list_projects. Leave unset for the account's default project. Ignored when the API key is pinned to a project; passi…
- `provider`: Filter by provider: linkedin, linkedin_pages, tiktok, or meta

### `slidefast_get_social_post` (~109 tokens)

Get social post status

Get one publish attempt — use this to poll a publish to completion.

\`status` moves `pending` -> `publishing` -> `published` or `failed`. When it
is `published`, `external_post_url` links to the live post (empty for a
TikTok draft, which is still sitting in the creator's inbox). When it is
\`failed`, `error_message` says why.

Input parameters:

- `post_id` (string, required): UUID returned by a publish tool

### `slidefast_get_tiktok_publish_status` (~99 tokens)

Get TikTok publish status

Ask TikTok directly what happened to a publish_id.

\`SEND_TO_USER_INBOX` means the draft is waiting in the creator's TikTok
inbox (nothing public). `PUBLISH_COMPLETE` means it is live.
\`FAILED` comes with a `fail_reason`.

Input parameters:

- `account_id`: Which connected TikTok account to ask
- `publish_id` (string, required): TikTok publish_id from the social post record

### `slidefast_get_review_link` (~83 tokens)

Get review link

Get the deck's client review link, or null if it has none.

Returns `url` (the page the client opens, no account needed), `token`,
\`status` (`pending`, `approved` or `changes_requested`), `reviewer_name` and
\`decided_at`.

Input parameters:

- `presentation_id` (string, required): UUID of the presentation

Output parameters:

- `result`

### `slidefast_create_review_link` (~133 tokens)

Create review link

Create a shareable client-approval link for a deck. Agency plan only.

Give the returned `url` to the client: they open it logged out, read the
deck, and either approve it or ask for changes. Calling this twice returns
the same link rather than creating a second one.

Then read `slidefast_get_review_thread` to see their answer. Do NOT poll it
in a loop; check when the user asks, or once per session.

On a Solo plan this fails with a 402 telling you to upgrade.

Input parameters:

- `presentation_id` (string, required): UUID of the presentation

### `slidefast_rotate_review_link` (~66 tokens)

Rotate review link

Issue a new review token, killing the URL already sent to the client.

Use it when a link leaked. The comment thread and decision history survive;
only the URL changes, so the client needs the new one.

Input parameters:

- `presentation_id` (string, required): UUID of the presentation

### `slidefast_revoke_review_link` (~36 tokens)

Revoke review link

Revoke the review link. The URL stops working immediately.

Input parameters:

- `presentation_id` (string, required): UUID of the presentation

### `slidefast_get_review_thread` (~80 tokens)

Get review comments

Read the review status and everything the client wrote.

\`link` is null when no review link exists. `comments` is the thread, oldest
first. When `link.status` is `changes_requested`, feed those comments to
\`slidefast_chat` as the edit brief.

Input parameters:

- `presentation_id` (string, required): UUID of the presentation

### `slidefast_get_usage` (~18 tokens)

Get plan usage

Get the authenticated user's monthly usage stats.

### `slidefast_get_me` (~23 tokens)

Get account

Get the authenticated account's name, email, and plan summary.

## Diagnostics

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

## Score history

- 2026-09-20: 56
- 2026-09-19: 55
- 2026-09-18: 55
- 2026-09-17: 54
- 2026-09-16: 69
- 2026-09-15: 53
- 2026-09-14: 68
- 2026-09-13: 53
- 2026-09-12: 67
- 2026-09-11: 52
- 2026-09-10: 51
- 2026-09-09: 48
- 2026-09-08: 48
- 2026-09-07: 48
- 2026-09-06: 63
- 2026-09-05: 63
- 2026-09-04: 63
- 2026-09-03: 63

## Common questions

### What is the Slidefast MCP server?

Slidefast is an MCP server listed in the public MCP registry as io.slidefast/slidefast. Create, edit, export and publish social carousels from your Slidefast account. This page covers its PyPI package (slidefast-mcp).

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

Slidefast scores 56 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. 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 Slidefast MCP server expose?

Slidefast exposes 50 tools: slidefast_list_projects, slidefast_create_project, slidefast_get_active_project, slidefast_check_rate_limit, slidefast_list_presentations, and 45 more. Their descriptions and schemas cost roughly 5,664 tokens of context every time the server is loaded.

### Is the Slidefast MCP server still maintained?

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

## Links

- PyPI project: https://pypi.org/project/slidefast-mcp/
- Socket report: https://socket.dev/pypi/package/slidefast-mcp
- Website: https://slidefast.io/docs/mcp
- Changelog RSS feed: https://verifymcp.io/servers/io-slidefast-slidefast/slidefast-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/io-slidefast-slidefast/slidefast-mcp.json
- HTML version of this page: https://verifymcp.io/servers/io-slidefast-slidefast/slidefast-mcp
