Skip to main content
Glama

Import a PowerPoint or EaseWeb file

import_presentation

Create a new presentation of yours from a PowerPoint file (.pptx) or an EaseWeb archive (.zip, as exported by the site): slides, texts with their formatting, shapes, pictures, backgrounds and links become editable blocks, the way the "Import" button of the site does it. Returns the new presentation (ids only unless "response" is "full") and "warnings" about what could not be converted. With "into" (the slug of a presentation you may edit) the file updates that presentation instead: slide N of the file replaces the blocks and the background of slide N, which keeps its id, so links to it, notes and history stay; unchanged texts keep their translations. "slides" limits it to some numbers of the file; slides of the file after the last one of the presentation are added. Its title, theme, slide names and database scripts stay.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
intoNoSlug of an existing presentation to update from the file (instead of creating a new one).
titleNoTitle of the new presentation (optional).
accessNoWho sees it (default "private": only you, until you publish it; "public": everybody reads it; "open": every signed-in person edits it too).
renameNoWith "into": give the slides the names the file has (default false: they keep theirs).
slidesNoWith "into": only these slide numbers of the file (1-based); all by default.
projectNoSlug of one of your projects to put the presentation in.
filenameNoName of the file, like "lecture.pptx" (its extension helps to recognise the format; without a title, it gives the title).
responseNo"brief" (default): only the ids, numbers and types of the slides and blocks; "full": every prop of every block too.
data_base64YesThe file, base64 (a data: URL prefix is allowed; at most 28 MB).
base_versionNoWith "into": the "version" of the presentation as you read it; refused (409) when it changed meanwhile.
remove_extraNoWith "into": remove the slides of the presentation after the last slide of the file (default false).

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYes
urlNoThe address people open in a browser.
langNoThe language its texts are written in; "tr" holds the others.
slugYesThe address of the presentation: /movie/<slug>/.
ownerNoUser name of the author.
themeNo
titleNo
accessNoopen, public or private.
slidesYes
projectNoThe project it belongs to, or null.
updatedNo
versionNoStamp of the content as it is now: give it back as "base_version" to change it only if nobody else did meanwhile.
can_editNoWhether you may change it.
databaseNoSetup scripts of the databases of runnable code blocks (shown to the author only).
title_trNoThe same text in the other languages of the site: {"en": "..."}.
warningsNoWhat could not be converted.
languagesNoThe languages of the site.
cover_slideNoId of the slide shown as its cover in the lists (null: an uploaded picture, or no slides).
descriptionNo
missing_translationsNoWhat is not translated yet into the other languages of the site (add it): the first ones; "missing_translations_count" says how many there are.
missing_translations_countNoHow many texts are not translated yet.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / access
      Added value: +{
      +  "description": "Who sees it (default \"private\": only you, until you publish it; \"public\": everybody reads it; \"open\": every signed-in person edits it too).",
      +  "enum": [
      +    "open",
      +    "public",
      +    "private"
      +  ],
      +  "type": "string"
      +}
  2. Changed13 schema fields changed
    • addedInput schema / properties / base_version
      Added value: +{
      +  "description": "With \"into\": the \"version\" of the presentation as you read it; refused (409) when it changed meanwhile.",
      +  "type": "string"
      +}
    • addedInput schema / properties / into
      Added value: +{
      +  "description": "Slug of an existing presentation to update from the file (instead of creating a new one).",
      +  "type": "string"
      +}
    • addedInput schema / properties / remove_extra
      Added value: +{
      +  "description": "With \"into\": remove the slides of the presentation after the last slide of the file (default false).",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / rename
      Added value: +{
      +  "description": "With \"into\": give the slides the names the file has (default false: they keep theirs).",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / slides
      Added value: +{
      +  "description": "With \"into\": only these slide numbers of the file (1-based); all by default.",
      +  "items": {
      +    "type": "integer"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / properties / missing_translations / description
      Previous value: -"What is not translated yet into the other languages of the site (add it)."New value: +"What is not translated yet into the other languages of the site (add it): the first ones; \"missing_translations_count\" says how many there are."
    • addedOutput schema / properties / missing_translations_count
      Added value: +{
      +  "description": "How many texts are not translated yet.",
      +  "type": "integer"
      +}
    • addedOutput schema / properties / slides / items / properties / layout_warnings
      Added value: +{
      +  "description": "How the changed slides will probably look: texts too long for their blocks, blocks outside the slide, texts over each other (estimated -- look at them).",
      +  "items": {
      +    "properties": {
      +      "block_id": {
      +        "type": "integer"
      +      },
      +      "detail": {
      +        "type": "string"
      +      },
      +      "problem": {
      +        "description": "overflow, cut, outside or overlap.",
      +        "type": "string"
      +      },
      +      "slide_id": {
      +        "type": "integer"
      +      },
      +      "slide_number": {
      +        "type": "integer"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / properties / slides / items / properties / missing_translations / description
      Previous value: -"What is not translated yet into the other languages of the site (add it)."New value: +"What is not translated yet into the other languages of the site (add it): the first ones; \"missing_translations_count\" says how many there are."
    • addedOutput schema / properties / slides / items / properties / missing_translations_count
      Added value: +{
      +  "description": "How many texts are not translated yet.",
      +  "type": "integer"
      +}
    • addedOutput schema / properties / slides / items / properties / version
      Added value: +{
      +  "description": "Stamp of the content as it is now: give it back as \"base_version\" to change it only if nobody else did meanwhile.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / updated
      Added value: +{
      +  "properties": {
      +    "added": {
      +      "description": "Numbers of the slides it added.",
      +      "items": {
      +        "type": "integer"
      +      },
      +      "type": "array"
      +    },
      +    "changed": {
      +      "description": "Numbers of the slides the file replaced.",
      +      "items": {
      +        "type": "integer"
      +      },
      +      "type": "array"
      +    },
      +    "removed": {
      +      "type": "integer"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedOutput schema / properties / version
      Added value: +{
      +  "description": "Stamp of the content as it is now: give it back as \"base_version\" to change it only if nobody else did meanwhile.",
      +  "type": "string"
      +}
  3. Changed2 schema fields changed
    • addedOutput schema / properties / cover_slide
      Added value: +{
      +  "description": "Id of the slide shown as its cover in the lists (null: an uploaded picture, or no slides).",
      +  "type": [
      +    "integer",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / database / properties / clickhouse
      Added value: +{
      +  "type": "string"
      +}
  4. Changed2 schema fields changed
    • addedOutput schema / properties / slides / items / properties / transition
      Added value: +{
      +  "description": "Entrance effect of this incoming slide.",
      +  "enum": [
      +    "none",
      +    "fade",
      +    "slide-left",
      +    "slide-right",
      +    "zoom"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / slides / items / properties / transition_duration
      Added value: +{
      +  "description": "Animation milliseconds, not auto advance.",
      +  "maximum": 3000,
      +  "minimum": 100,
      +  "type": "integer"
      +}
  5. Changed6 schema fields changed
    • addedOutput schema / properties / lang
      Added value: +{
      +  "description": "The language its texts are written in; \"tr\" holds the others.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / languages
      Added value: +{
      +  "description": "The languages of the site.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / missing_translations
      Added value: +{
      +  "description": "What is not translated yet into the other languages of the site (add it).",
      +  "items": {
      +    "properties": {
      +      "block_id": {
      +        "type": "integer"
      +      },
      +      "lang": {
      +        "type": "string"
      +      },
      +      "slide_id": {
      +        "type": "integer"
      +      },
      +      "slide_number": {
      +        "type": "integer"
      +      },
      +      "what": {
      +        "description": "title, slide name or block.",
      +        "type": "string"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / slides / items / properties / missing_translations
      Added value: +{
      +  "description": "What is not translated yet into the other languages of the site (add it).",
      +  "items": {
      +    "properties": {
      +      "block_id": {
      +        "type": "integer"
      +      },
      +      "lang": {
      +        "type": "string"
      +      },
      +      "slide_id": {
      +        "type": "integer"
      +      },
      +      "slide_number": {
      +        "type": "integer"
      +      },
      +      "what": {
      +        "description": "title, slide name or block.",
      +        "type": "string"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / slides / items / properties / name_tr
      Added value: +{
      +  "description": "The same text in the other languages of the site: {\"en\": \"...\"}.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / title_tr
      Added value: +{
      +  "description": "The same text in the other languages of the site: {\"en\": \"...\"}.",
      +  "type": "object"
      +}
  6. Changed2 schema fields changed
    • addedInput schema / properties / project
      Added value: +{
      +  "description": "Slug of one of your projects to put the presentation in.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / project
      Added value: +{
      +  "description": "The project it belongs to, or null.",
      +  "properties": {
      +    "slug": {
      +      "type": "string"
      +    },
      +    "title": {
      +      "type": "string"
      +    }
      +  },
      +  "type": [
      +    "object",
      +    "null"
      +  ]
      +}
  7. Added

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only cover the safety profile (readOnly=false, destructive=false, idempotent=false, openWorld=false). The description goes well beyond: it discloses the returned 'warnings', the brief/full response distinction, the slide-N replacement semantics that preserve id/links/notes/history, preservation of translations, title/theme/slide-name/script retention, and a 409 refusal on version conflict. This is unusually rich behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense paragraphs, front-loaded with the create path before the 'into' update path, which is the right ordering. Almost every clause carries information; length is justified by 11 parameters and two distinct modes, though it could be tightened slightly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the description still covers the key output cues (ids unless 'full', warnings). For an 11-parameter import tool with an update mode, it covers both modes, edge cases, and the version-conflict guard, leaving nothing an agent needs to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the per-parameter baseline is 3. The description adds genuine cross-parameter meaning beyond the schema: how 'into' interacts with 'slides' (slide N replaces slide N, file slides after the last are added), what 'base_version' guards against (409), and what 'response' changes. It does not re-explain every field, but the interaction semantics are real added value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (create a presentation) constrained to two file formats (.pptx, .zip as exported by the site), and enumerates what becomes editable (slides, texts, shapes, pictures, backgrounds, links). It is clearly distinguished from a blank-create sibling because it is scoped to file import, and it names the second mode ('into') without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly explains the two usage modes: no 'into' creates a new presentation, and with 'into' the file updates an existing one. Context is strong, but no alternative sibling (e.g. create_presentation or upload_image) is named as a 'when not to use this' option, so the routing guidance stops short of explicit exclusivity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources