Skip to main content
Glama

Read any presentation

read_presentation
Read-onlyIdempotent

Read any presentation you can see (not private, or shared with you) the way a person sees it: slide by slide, the texts in reading order, pictures' descriptions, code, and where every button or link leads. A card (a shape with a link and the blocks on it that lead to the same place) is one entry of type "card" with the ids of all its blocks. format "markdown" (default) is compact; "json" is structured.

Input Schema

NameRequiredDescriptionDefault
langNoRead the texts in this language (default: the one it is written in); what is not translated shows in its own language.
slugYesThe presentation's slug (its address: /movie/<slug>/).
formatNoResult format: "markdown" (default, compact) or "json" (structured).
slide_idsNoOnly these slides (ids).
to_numberNoOnly the slides up to this number (inclusive).
from_numberNoOnly the slides from this number on (1-based).

Output Schema

NameRequiredDescriptionDefault
idNo
urlNoThe address people open in a browser.
langNoThe language its texts are written in; "tr" holds the others.
slugNoThe address of the presentation: /movie/<slug>/.
ownerNoUser name of the author.
themeNo
titleNo
accessNoopen, public or private.
slidesNo
projectNoThe project it belongs to, or null.
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.
markdownNo
title_trNoThe same text in the other languages of the site: {"en": "..."}.
languagesNoThe languages of the site.
shown_langNoThe language of the texts shown.
cover_slideNoId of the slide shown as its cover in the lists (null: an uploaded picture, or no slides).
descriptionNo
slides_totalNoSlides of the whole presentation (a part may be shown).
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
    • addedOutput schema / properties / missing_translations / items / properties / outdated
      Added value: +{
      +  "description": "There is a translation, written for an earlier text.",
      +  "type": "boolean"
      +}
  2. Changed7 schema fields changed
    • addedInput schema / properties / from_number
      Added value: +{
      +  "description": "Only the slides from this number on (1-based).",
      +  "type": "integer"
      +}
    • addedInput schema / properties / slide_ids
      Added value: +{
      +  "description": "Only these slides (ids).",
      +  "items": {
      +    "type": "integer"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / to_number
      Added value: +{
      +  "description": "Only the slides up to this number (inclusive).",
      +  "type": "integer"
      +}
    • 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_total
      Added value: +{
      +  "description": "Slides of the whole presentation (a part may be shown).",
      +  "type": "integer"
      +}
    • 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. Changed1 schema field 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"
      +  ]
      +}
  4. Changed6 schema fields changed
    • addedInput schema / properties / lang
      Added value: +{
      +  "description": "Read the texts in this language (default: the one it is written in); what is not translated shows in its own language.",
      +  "enum": [
      +    "ru",
      +    "en"
      +  ],
      +  "type": "string"
      +}
    • 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 / shown_lang
      Added value: +{
      +  "description": "The language of the texts shown.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / title_tr
      Added value: +{
      +  "description": "The same text in the other languages of the site: {\"en\": \"...\"}.",
      +  "type": "object"
      +}
  5. Changed1 schema field changed
    • addedOutput schema / properties / project
      Added value: +{
      +  "description": "The project it belongs to, or null.",
      +  "properties": {
      +    "slug": {
      +      "type": "string"
      +    },
      +    "title": {
      +      "type": "string"
      +    }
      +  },
      +  "type": [
      +    "object",
      +    "null"
      +  ]
      +}
  6. Changed2 schema fields changed
    • addedInput schema / properties / format / description
      Added value: +"Result format: \"markdown\" (default, compact) or \"json\" (structured)."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "description": "With format \"markdown\" (default): {\"markdown\"}; with \"json\": the presentation slide by slide.",
      +  "properties": {
      +    "access": {
      +      "description": "open, public or private.",
      +      "type": "string"
      +    },
      +    "can_edit": {
      +      "description": "Whether you may change it.",
      +      "type": "boolean"
      +    },
      +    "description": {
      +      "type": "string"
      +    },
      +    "id": {
      +      "type": "integer"
      +    },
      +    "markdown": {
      +      "type": "string"
      +    },
      +    "owner": {
      +      "description": "User name of the author.",
      +      "type": "string"
      +    },
      +    "slides": {
      +      "items": {
      +        "properties": {
      +          "blocks": {
      +            "description": "Texts, pictures, code and links in reading order.",
      +            "items": {
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "has_background_picture": {
      +            "type": "boolean"
      +          },
      +          "id": {
      +            "type": "integer"
      +          },
      +          "name": {
      +            "type": "string"
      +          },
      +          "number": {
      +            "type": "integer"
      +          },
      +          "url": {
      +            "description": "The address people open in a browser.",
      +            "type": "string"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "slug": {
      +      "description": "The address of the presentation: /movie/<slug>/.",
      +      "type": "string"
      +    },
      +    "theme": {
      +      "type": "string"
      +    },
      +    "title": {
      +      "type": "string"
      +    },
      +    "url": {
      +      "description": "The address people open in a browser.",
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
  7. First observed

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already establish readOnly/idempotent/non-destructive/openWorld=false, so the safety profile is covered. The description still adds real value: it discloses what the output contains (reading order, image descriptions, code, link destinations), the 'card' grouping semantics with its block ids, and the compact-vs-structured tradeoff of the two formats.

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 sentences, purpose front-loaded, and the card detail is placed immediately before the format note where it matters. Slightly dense — the parenthetical defining a card is long — but no filler sentences.

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?

With an output schema present, the description need not explain return values, yet it does sketch the shape (per-slide entries, card entries with block ids) and the format choice. Combined with 100% schema coverage and read-only annotations, an agent has everything needed to call it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description restates the format enum ('markdown' default/compact, 'json' structured) without adding anything the schema lacks, and says nothing about lang, slide_ids, or the from_number/to_number windowing.

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

Purpose4/5

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

States a concrete verb and resource and frames the result precisely: reading a presentation 'the way a person sees it' — slide by slide, texts in reading order, image descriptions, code, and link targets. That framing implicitly separates it from a raw data fetch, but no sibling (get_presentation, get_slides, preview_slides) is named to anchor the difference.

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

Usage Guidelines3/5

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

Access scope is stated ('any presentation you can see (not private, or shared with you)'), which is useful, but there is no explicit when-to-use rule and no comparison to the several sibling read tools (get_presentation, get_slide, get_slides, preview_slides). The agent must infer that this is the human-readable rendering path rather than having it stated.

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