> **Building with AI coding agents?** Install the authstack plugin with one command. This equips your agent with accurate Scalekit implementation patterns.
>
> **Recommended** (the `-y` flags skip prompts, so the command runs without an interactive terminal):
> ```bash
> npx -y @scalekit-inc/cli setup -y
> ```
>
> Global:
> ```bash
> npm install -g @scalekit-inc/cli
> scalekit setup -y
> ```
>
> Supports Claude Code, Cursor, GitHub Copilot, Codex + skills for other Agent Skills-compatible agents in `~/.agents/skills`.
> Skills: integrate-agentkit, implement-saaskit, add-mcp-oauth, implement-sso, implement-scim.
> [Full setup guide](https://docs.scalekit.com/dev-kit/build-with-ai/)

---

# Connect AI agents to MagicSlides

The MagicSlides connector lets your AI agent act in each user's MagicSlides account. Each user connects their own MagicSlides API key once, and Scalekit sends it with every call, so your agent never handles credentials. It comes with 9 tools.

**Authentication:** API Key
**Categories:** AI, Productivity
**Tools:** 9: 4 read, 5 write, 0 destructive
**Users sign in with:** API key
**Built by:** Scalekit connector
**Try it:** [Playground in the Scalekit dashboard](https://app.scalekit.com/ws/signup?sk_intent=playground&provider=MAGICSLIDES)

## Setup

1. ### Install the SDK

   **Node.js**

   ```bash
   npm install @scalekit-sdk/node dotenv
   ```

   **Python**

   ```bash
   pip install scalekit-sdk-python python-dotenv
   ```

2. ### Set your credentials

   Add your Scalekit credentials to your `.env` file. Find values in **[app.scalekit.com](https://app.scalekit.com)** > **Developers** > **API Credentials**.

   ```sh title=".env"
   SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
   SCALEKIT_CLIENT_ID=<your-client-id>
   SCALEKIT_CLIENT_SECRET=<your-client-secret>
   ```

3. ### Create the MagicSlides connection

   In **AgentKit > Connections**, create a MagicSlides connection. The name you give it is the `connection_name` your code passes. See [Configure connections](/agentkit/connections/).

4. ### Authorize a user and make your first call

   **Node.js** (`quickstart.mts`)

   ```typescript
   import { ScalekitClient } from '@scalekit-sdk/node'
   import 'dotenv/config'
   import { createInterface } from 'node:readline/promises'

   const scalekit = new ScalekitClient(
     process.env.SCALEKIT_ENVIRONMENT_URL,
     process.env.SCALEKIT_CLIENT_ID,
     process.env.SCALEKIT_CLIENT_SECRET,
   )
   const actions = scalekit.actions

   const connector = 'magicslides'
   const identifier = 'user_123'

   // Generate an authorization link for the user
   const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
   console.log('Authorize MagicSlides:', link)
   const rl = createInterface({ input: process.stdin, output: process.stdout })
   await rl.question('Press Enter after authorizing...')
   rl.close()

   // Make your first call
   const result = await actions.executeTool({
     connector,
     identifier,
     toolName: 'magicslides_get_current_user',
     toolInput: {},
   })
   console.log(result)
   ```

   ```bash
   npx tsx quickstart.mts
   ```

   **Python** (`quickstart.py`)

   ```python
   import os
   from scalekit import ScalekitClient
   from dotenv import load_dotenv
   load_dotenv()

   scalekit_client = ScalekitClient(
       env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),
       client_id=os.getenv("SCALEKIT_CLIENT_ID"),
       client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),
   )
   actions = scalekit_client.actions

   connection_name = "magicslides"
   identifier = "user_123"

   # Generate an authorization link for the user
   link_response = actions.get_authorization_link(
       connection_name=connection_name,
       identifier=identifier,
   )
   print("Authorize MagicSlides:", link_response.link)
   input("Press Enter after authorizing...")

   # Make your first call
   result = actions.execute_tool(
       tool_input={},
       tool_name="magicslides_get_current_user",
       connection_name=connection_name,
       identifier=identifier,
   )
   print(result)
   ```

   ```bash
   python quickstart.py
   ```

   Each user opens the link once and enters their MagicSlides credentials there. See [Authorize a user](/agentkit/tools/authorize/) for the full flow and statuses.

## Tools

Pass the exact name to `execute_tool`, with an input like each tool's example. To ask for a tool that's missing, use the [request form](https://scalekitsupport.portal.usepylon.com/forms/request-a-connector-tool).

**Node.js**

```typescript
const result = await actions.executeTool({
  toolName: 'magicslides_get_current_user',
  toolInput: {},
  connector: 'magicslides',
  identifier: 'user_123',
})
```

**Python**

```python
result = actions.execute_tool(
    tool_name="magicslides_get_current_user",
    tool_input={},
    connection_name="magicslides",
    identifier="user_123",
)
```

`result.data` is the app's response as JSON, and `result.execution_id` (`executionId` in Node.js) is the ID of the call.

### `magicslides_get_current_user`

Get Current User · Read-only

Get the MagicSlides account behind the API key.
Returns success and user, with the account email and plan. Free.
Use magicslides_get_current_user to check that the connection works and which plan it is on before generating decks.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `magicslides_get_studio_template_schema`

Get Studio Template Schema · Read-only

Get the slide plan and text slots to fill for a MagicSlides Studio template, so you can write the deck copy yourself.
Returns templateKey, slideCount, plan, slides (each with index, layoutKey, imageMode and slots, a map of slot key to guidance on what to write), an example request body to copy, and byoReadyTemplates. Free.
Use magicslides_get_studio_template_schema before magicslides_create_studio_presentation_from_slots. Only templates with slotsReady true work; the default template is creative-design.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `slides` (`integer`, optional): Number of slides to plan, 3 to 20. MagicSlides uses 7 when omitted. Example: 7.
- `template_key` (`string`, optional): Key of a Studio template with slotsReady true, from magicslides_list_studio_templates. MagicSlides uses its default template when omitted. Example: editorial-pitch.

Example input: `{}`

### `magicslides_list_studio_templates`

List Studio Templates · Read-only

List the pre-designed MagicSlides Studio templates that Studio decks are built from.
Returns templates, each with templateKey, name, category and slotsReady. Templates with slotsReady true can be filled with your own copy through magicslides_get_studio_template_schema and magicslides_create_studio_presentation_from_slots. Free.
Use magicslides_list_studio_templates to pick a template for the Studio tools. Use magicslides_list_templates for the templates used by magicslides_generate_template_presentation.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `magicslides_list_templates`

List Templates · Read-only

List the MagicSlides presentation templates that magicslides_generate_template_presentation can use.
Returns the templates with each one's key (pass it as template_key) and descriptive details. Free.
Use magicslides_list_templates before magicslides_generate_template_presentation. Use magicslides_list_studio_templates for the Studio templates used by magicslides_generate_studio_presentation.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `mode` (`string`, optional): Set to proslides to list only the templates that produce per-slide HTML output. Omit to list every template. One of: `proslides`.

Example input: `{}`

### `magicslides_create_studio_presentation_from_slots`

Create Studio Presentation from Slots · Write

Render a designed MagicSlides Studio deck from slide copy you wrote for a template's slots. MagicSlides writes none of the text.
Returns status, previewImageUrl (PNG of the first slide), previewUrl (live slideshow), shareUrl, editUrl (opens in MagicSlides Studio), pdfUrl, slideCount, templateKey and conversationId. Free.
Use magicslides_create_studio_presentation_from_slots when you have written the content. Use magicslides_generate_studio_presentation to have MagicSlides write it.
Call magicslides_get_studio_template_schema first for the same template_key to get the layoutKey and slot keys of each slide.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `slides` (`array`, required): The deck's slides, 3 to 20, in order. Each slide gives the layoutKey from the schema and a slots object that maps every slot key from the schema to your text. Image slots ending in _URL take an image link; slots ending in _QUERY take a search phrase. Example: [{"layoutKey": "cover", "slots": {"TITLE": "Q3 Product Update", "SUBTITLE": "What shipped and what is next"}}].
- `template_key` (`string`, required): The same slotsReady Studio template key you got the schema for from magicslides_get_studio_template_schema. Example: editorial-pitch.
- `include_images` (`string`, optional): How to fill image slots that you gave a search phrase (_QUERY) but no image link (_URL) for: stock for stock photos, ai for AI-generated images, none for no image. MagicSlides uses stock when omitted. One of: `stock`, `none`, `ai`.
- `language` (`string`, optional): Language of the slide text as an ISO 639-1 code. Example: en, es, fr, de, ja. Defaults to en when omitted.
- `title` (`string`, optional): Title of the deck. Example: Q3 Product Update.

Example input: `{"slides":[{"layoutKey":"cover","slots":{"TITLE":"Q3 Product Update","SUBTITLE":"What shipped and what is next"}}],"template_key":"<template_key>"}`

### `magicslides_generate_presentation`

Generate Presentation · Write

Generate an AI presentation in the MagicSlides editor from a topic or from text you paste in, such as notes or a summary.
Returns success, presentationId, presentationUrl (the MagicSlides editor link, where the deck can be edited and downloaded as PPTX or PDF), slug and slideCount. Takes about 30 to 60 seconds and uses MagicSlides credits.
Use magicslides_generate_presentation for a deck from a topic or text. Use magicslides_generate_presentation_from_url to turn a web page into slides. Use magicslides_generate_template_presentation when you need direct PPTX and PDF links in a designed template.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `topic` (`string`, required): What the presentation is about: a short topic, or the full text to turn into slides (notes, a summary, an outline). Be specific. Example: The future of AI in healthcare: diagnostics, drug discovery and patient privacy.
- `include_images` (`boolean`, optional): Set to true to add stock images to the slides. Defaults to false.
- `language` (`string`, optional): Language of the slide text as an ISO 639-1 code. Example: en, es, fr, de, ja. Defaults to en when omitted.
- `presentation_for` (`string`, optional): Who the presentation is for, as free text. Example: hospital administrators.
- `presentation_tone` (`string`, optional): Tone of the slide copy, as free text. Examples: professional, casual, persuasive.
- `presentation_type` (`string`, optional): Kind of presentation, as free text that steers the writing style. Examples: business, educational, pitch.
- `slides` (`integer`, optional): Number of slides to generate, 1 to 20. MagicSlides uses 5 when omitted. Example: 8.
- `web_search` (`boolean`, optional): Set to true to research the topic with a live web search before writing the slides. Defaults to false.

Example input: `{"topic":"<topic>"}`

### `magicslides_generate_presentation_from_url`

Generate Presentation from URL · Write

Generate an AI presentation in the MagicSlides editor from the content of a public web page, such as an article, blog post or documentation page.
Returns success, presentationId, presentationUrl (the MagicSlides editor link, where the deck can be edited and downloaded as PPTX or PDF) and slideCount. Takes about 30 to 60 seconds and uses MagicSlides credits.
Use magicslides_generate_presentation_from_url when the source is a web page. Use magicslides_generate_presentation for a topic or text you already have.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `url` (`string`, required): Full URL of a publicly reachable web page whose content becomes the slides. Pages behind a login cannot be read. Example: https://en.wikipedia.org/wiki/Solar_energy.
- `language` (`string`, optional): Language of the slide text as an ISO 639-1 code. Example: en, es, fr, de, ja. Defaults to en when omitted.
- `slides` (`integer`, optional): Number of slides to generate, 1 to 20. MagicSlides uses 5 when omitted. Example: 10.

Example input: `{"url":"<url>"}`

### `magicslides_generate_studio_presentation`

Generate Studio Presentation · Write

Generate a designed MagicSlides Studio deck from a topic, with MagicSlides AI writing all the slide copy.
Returns status, previewImageUrl (PNG of the first slide), previewUrl (live slideshow), shareUrl, editUrl (opens in MagicSlides Studio), pdfUrl, slideCount, templateKey and conversationId. Takes up to about 40 seconds and uses MagicSlides AI credits. When status is out_of_credits, the response includes a createUrl to give the user.
Use magicslides_generate_studio_presentation only when MagicSlides should write the content. Use magicslides_create_studio_presentation_from_slots to render copy you wrote yourself, which is free.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `topic` (`string`, required): What the presentation is about. Be specific. Example: Quarterly product update for the sales team.
- `audience` (`string`, optional): Who the presentation is for, as free text. Example: enterprise sales team.
- `language` (`string`, optional): Language of the slide text as an ISO 639-1 code. Example: en, es, fr, de, ja. Defaults to en when omitted.
- `slides` (`integer`, optional): Number of slides, 3 to 20. MagicSlides uses 7 when omitted. Example: 7.
- `template_key` (`string`, optional): Key of the Studio template to use, from magicslides_list_studio_templates. MagicSlides picks one when omitted. Example: editorial-pitch.

Example input: `{"topic":"<topic>"}`

### `magicslides_generate_template_presentation`

Generate Template Presentation · Write

Generate an AI presentation on a topic in a designed MagicSlides template, with ready-made download files.
Returns success, templateKey, slideCount, presentUrl (hosted slideshow), pptxUrl, pdfUrl and slides (one item per slide with its index and full HTML). Takes about 30 to 60 seconds and uses MagicSlides credits.
Use magicslides_generate_template_presentation when you need direct PPTX or PDF links or per-slide HTML. Use magicslides_generate_presentation for a deck to edit in the MagicSlides editor.
Call magicslides_list_templates first to get a valid template_key.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `template_key` (`string`, required): Key of the template to use, from magicslides_list_templates. Example: editorial-magazine.
- `topic` (`string`, required): What the presentation is about. Be specific. Example: Sustainable energy trends 2025.
- `language` (`string`, optional): Language of the slide text as an ISO 639-1 code. Example: en, es, fr, de, ja. Defaults to en when omitted.
- `presentation_for` (`string`, optional): Who the presentation is for, as free text. Example: hospital administrators.
- `presentation_tone` (`string`, optional): Tone of the slide copy, as free text. Examples: professional, casual, persuasive.
- `presentation_type` (`string`, optional): Kind of presentation, as free text that steers the writing style. Examples: business, educational, pitch.
- `slides` (`integer`, optional): Number of slides to generate, 3 to 20. MagicSlides uses 7 when omitted. Example: 8.

Example input: `{"template_key":"<template_key>","topic":"<topic>"}`

## Related

Other AI connectors ([all 148](/agentkit/connectors/?category=ai)):

- [Chorus](/agentkit/connectors/chorus/): Scalekit connector, Username and password, 9 tools
- [Gong](/agentkit/connectors/gong/): Scalekit connector, OAuth, 69 tools
- [Jiminny](/agentkit/connectors/jiminny/): Scalekit connector, Access token, 27 tools


---

## More Scalekit documentation

| Resource | What it contains | When to use it |
|----------|-----------------|----------------|
| [/llms.txt](/llms.txt) | Structured index with routing hints per product area | Start here — find which documentation set covers your topic before loading full content |
| [/llms-full.txt](/llms-full.txt) | Complete documentation for all Scalekit products in one file | Use when you need exhaustive context across multiple products or when the topic spans several areas |
| [sitemap-0.xml](https://docs.scalekit.com/sitemap-0.xml) | Full URL list of every documentation page | Use to discover specific page URLs you can fetch for targeted, page-level answers |
