Skip to main content
Glama

Publish an HTML-native presentation

publish_presentation

Create slides, a slide deck, pitch deck, talk, lesson, or keynote as a first-class HTML presentation. First call get_recipe: use recipeId "pm-decision-deck" for a product manager seeking a product decision, otherwise "presentation-deck". Structural validation and DOM checks alone are not visual QA. When browser or rendering tools are available, render and inspect the actual rendered pixels of every slide at the declared desktop canvas, a narrow viewport, and print size; fix the source HTML/CSS and re-render affected slides until the full deck passes before publishing, re-rendering every slide after shared CSS changes. If rendering is unavailable, tell the user that visual QA was not completed; publishing may proceed with that disclosure. ShareHTML sanitizes and validates the deck, persists it, applies access controls and CSP, and returns its presentation viewer URL.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
htmlYesOne complete static HTML document following the presentation-deck recipe.
titleNoA distinctive deck title that will be easy to find later.
sharingNoOptional access policy. Omit it to publish privately.
styleRefNoOptional exact active reference from get_artifact_style with format presentation. Requires styles:read in addition to pages:write; records declared provenance, not visual fidelity.
presentationNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / styleRef
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Optional exact active reference from get_artifact_style with format presentation. Requires styles:read in addition to pages:write; records declared provenance, not visual fidelity.",
      +  "properties": {
      +    "contentSha256": {
      +      "pattern": "^[0-9a-f]{64}$",
      +      "type": "string"
      +    },
      +    "revision": {
      +      "exclusiveMinimum": 0,
      +      "maximum": 9007199254740991,
      +      "type": "integer"
      +    },
      +    "styleVersionId": {
      +      "format": "uuid",
      +      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "styleVersionId",
      +    "revision",
      +    "contentSha256"
      +  ],
      +  "type": "object"
      +}
  2. First observed

TDQS

A3.8/5.0
Behavior4/5

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

Annotations declare it is a non-read-only, non-idempotent, open-world write, so the base safety profile is covered. The description adds real value beyond that: ShareHTML sanitizes and validates the deck, persists it, applies access controls and CSP, and returns a viewer URL — plus the visual-QA expectation and the required disclosure when rendering tools are missing.

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

Conciseness3/5

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

The opening sentence is well front-loaded, but the middle is a long, comma-chained run-on about rendering, re-rendering, and print-size inspection that could be tightened. Much of it earns its place as procedural guidance, but the density costs readability.

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

Completeness4/5

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

With five parameters, nested sharing/styleRef objects, no output schema, and no enum hints, the description covers the return value (viewer URL), the sanitization/access-control behavior, and the recipe dependency. It leaves sharing-mode differences and the styleRef read-permission requirement to the schema rather than restating them.

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 80%, so the schema already documents html, title, sharing, styleRef, and presentation. The description adds only marginal semantics (html must follow the recipe; recipeId selection guidance for the preceding get_recipe call) and does not explain the sharing modes or style provenance beyond what the schema says.

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 ('Create slides ... as a first-class HTML presentation') and enumerates the artifact genres it targets, so the agent knows this is a deck-publishing tool. It does not, however, distinguish itself from the sibling publish_html/publish_page tools, which is the main differentiation gap.

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?

Gives explicit workflow prerequisites: call get_recipe first, with a conditional recipeId choice ('pm-decision-deck' for a PM seeking a product decision, otherwise 'presentation-deck'). It also states the visual-QA obligation and the fallback disclosure when rendering is unavailable. It stops short of naming when to prefer a sibling like publish_html instead.

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.