Bisque Presentations
Server Details
Create narrated presentations from HTML, poll build status, list them, read one back as text.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Tool Definition Quality
Average 4.3/5 across 8 of 8 tools scored. Lowest: 3.7/5.
Most tools are clearly distinct, with create/get/list/publish/update separating actions and resources. The main ambiguity is between create_presentation and publish_narrated_presentation, though the descriptions do clarify that one is server-narrated and the other uses locally synthesized audio.
All tool names follow a consistent snake_case verb_noun pattern: create_, get_, list_, publish_, update_. The naming is predictable and makes the action and target resource easy to identify.
Eight tools is well-scoped for the presentations domain, covering authoring, publishing, status, reading, analytics, and channel configuration. There is no bloat, and each tool has a place in the workflow.
The core lifecycle is covered: fetch spec, create/publish, check status, list, read shared context, and view analytics. Obvious gaps like deleting or unpublishing a presentation are missing, but they are workable around and do not severely break the primary authoring-to-analytics workflow.
Available Tools
8 toolscreate_presentationCreate narrated presentationADestructiveInspect
Generate a narrated presentation from an html-presentation/v1 document. BEFORE authoring, call get_presentation_spec and follow it exactly — slides without its narration markup publish SILENT. Returns a presentationId; poll get_presentation_status until it is ready.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | No | URL slug; defaults to a slugified title. | |
| title | No | ||
| assets | No | Files the document references relative to itself — fonts, images, Lottie/Rive animations, sound-effect audio, video clips. The SERVER fetches each https url at create time and stores it in the bundle, so reference `assets/...` paths in your HTML and list the sources here instead of inlining base64. 10MB per asset, 30MB total. | |
| dryRun | No | Sandbox: run every check a real create runs (format, slug and org conflicts, tier cap, credit preflight) and write nothing. The reply has status "validated" and the webUrl a real create would publish at. Use it to test an integration without touching the channel. | |
| handle | No | Publish under a specific channel handle you own. | |
| voiceId | No | Narration voice. ElevenLabs: a bare id or cloud:<id>. Self-hosted Kokoro: kokoro:<id> (e.g. kokoro:af_heart); local:<id> is accepted as a synonym. Omit to use the voice saved on the account (bisque.cloud/account), falling back to the server default. | |
| designMd | No | Design frontmatter mapped to theme tokens. | |
| contextMd | No | Shared-with-viewer context.md. | |
| indexHtml | Yes | Full html-presentation/v1 document (the presentation-format meta gate applies). | |
| visibility | No | unlisted (the default) is shareable by link and plays in chat-embedded players; private requires the owner to sign in, so an inline chat player shows a sign-in wall instead of playing — choose private only when the user asked for it. | unlisted |
| speechSpeed | No | ||
| presentationId | No | Stable id for idempotent re-creates; defaults to slug-<hash(userId:slug)>. | |
| voiceStability | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | ready = nothing needed narration; queued = narration runs in the background — poll get_presentation_status. |
| webUrl | Yes | Shareable watch URL (live once status is ready). |
| narration | Yes | |
| statusUrl | Yes | |
| presentationId | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description adds valuable behavioral context: slides without the required narration markup 'publish SILENT,' and creation is asynchronous, requiring polling until ready. It does not elaborate on the destructiveHint=true annotation, but it does not contradict it, and the added silent-failure warning is genuinely useful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no filler: it states the core action, the critical prerequisite, and the follow-up step. Every sentence earns its place, and the most important warning is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 13-parameter complexity and availability of an output schema, the description covers the essential workflow: prerequisites, the silent-failure risk, and polling. It does not mention sibling-tool selection or destructive implications, but the core invocation context is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 77%, so most parameters are already documented. The description adds meaning around the main input by tying the html-presentation/v1 document to the narration markup requirement, but it does not otherwise explain parameters beyond the schema. This is adequate but not exceptional.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Generate a narrated presentation from an html-presentation/v1 document.' This clearly identifies what the tool does. However, it does not explicitly distinguish itself from the sibling publish_narrated_presentation, so an agent may have to infer the relationship between creating and publishing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage guidance: call get_presentation_spec before authoring, follow it exactly, and poll get_presentation_status after creation. This is clear operational context. It does not, however, explain when to choose this tool over publish_narrated_presentation or other siblings, so exclusion guidance is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_presentation_analyticsGet presentation analyticsARead-onlyIdempotentInspect
Watch analytics for one of your presentations: views, likes, completion rate, per-slide retention funnel, traffic sources, distinct signed-in/anonymous viewers, and organization email domains (personal providers filtered). Lets an agent read how its own published briefings performed.
| Name | Required | Description | Default |
|---|---|---|---|
| presentationId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| slug | Yes | |
| title | Yes | |
| webUrl | No | |
| sources | Yes | Traffic source → view count. |
| likeCount | Yes | |
| viewCount | Yes | |
| orgDomains | Yes | Organization email domains of signed-in viewers (personal providers filtered), sorted desc. |
| slideReach | Yes | Retention funnel ordered by slide index. |
| anonViewers | Yes | |
| uniqueViewers | Yes | Distinct signed-in viewers. |
| completedCount | Yes | |
| completionRate | Yes | completedCount / viewCount, 0..1; null when no views. |
| presentationId | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds valuable scope constraints: it only covers 'own published briefings' and notes that personal email providers are filtered from domains. These details are not in the annotations and give the agent insight into what data to expect and the tool's boundary conditions. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero filler. The first sentence front-loads the purpose and the full list of analytics fields. The second sentence clarifies the scope (own published briefings). Every word earns its place, and the structure is logical: purpose → scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter), existing output schema, and annotations covering safety, the description is comprehensive. It lists the analytics fields, notes the publisher ownership scope, and mentions filtering of personal providers. It does not explicitly address error handling or non-published presentations, but those are secondary given the schema and annotations. Slight room to mention what happens if the presentation doesn't exist or isn't published, but overall it's complete enough for an agent to call correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the presentationId parameter. The description refers to 'one of your presentations' which maps to presentationId but does not elaborate on the ID's format, provenance (e.g., from list_presentations), or validation. It gives minimal semantic context beyond the schema's type and length constraints. A stronger hint about how to obtain a valid presentationId would raise this score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Watch'/'read') and resource ('analytics for one of your presentations'), enumerating concrete metrics (views, likes, completion rate, per-slide retention, traffic sources, viewer counts, domains) and the scope ('its own published briefings'). This clearly distinguishes it from siblings like get_presentation_status or get_presentation_context, which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool: when an agent needs performance metrics for its own published presentations. It explicitly mentions the scope ('own published briefings') and lists the data types, which indirectly differentiates it from alternatives like get_presentation_status (status) or list_presentations (listing). However, it does not explicitly name sibling tools or provide 'when not to use' guidance, so it stops short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_presentation_contextLoad a presentation into contextARead-onlyIdempotentInspect
Load any shared Bisque presentation for reading: its metadata, the full per-slide narration transcript with timestamps, and the context.md file its author shipped for agents (extra background the slides summarize). Target it by watch URL (https://bisque.today/p/{handle}/{slug}) or by handle + slug — it does not have to be yours. Use this to read, summarize, cite, or answer questions about a presentation: ground your answers in the returned transcript and context, and cite slides as [slide N].
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Watch URL, e.g. https://bisque.today/p/{handle}/{slug}. Provide this OR handle + slug. | |
| slug | No | ||
| handle | No | Channel handle (leading @ allowed). |
Output Schema
| Name | Required | Description |
|---|---|---|
| slug | Yes | |
| title | Yes | |
| handle | Yes | |
| webUrl | Yes | |
| contextMd | Yes | The bundle's context.md (shared agent-facing background); null when the presentation ships none. |
| transcript | Yes | Per-slide narration, ordered by slide index. |
| visibility | Yes | |
| description | No | |
| publishedAt | No | ISO 8601, null when unknown. |
| presentationId | Yes | |
| contextTruncated | Yes | |
| transcriptTruncatedSlides | Yes | Content slides the size-capped transcript dropped; 0 = complete. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive; the description reinforces this with 'for reading' and adds concrete behavioral context: it loads metadata, timestamped narration transcript, and the context.md file, and it supports both URL or handle+slug targeting. No contradiction with annotations, and no hidden mutating side effects are implied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences, each with a distinct job: enumerate what is loaded, explain how to target it, and state the supported use cases with the slide-citation convention. There is no filler or repetition of schema/annotation data.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, three-optional-parameter tool, the description covers identification, payload contents, ownership scope, and downstream usage/citation behavior. With an output schema and safety annotations present, no essential caller-facing information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The main description adds the target-selection semantics that the schema leaves implicit: either the full watch URL or the handle+slug pair, with an example URL format. It also states the presentation need not be owned, which clarifies authorization scope. Slug still lacks its own schema description, but the OR-combination guidance compensates for the 67% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action ('Load... for reading') and resource (shared Bisque presentation), and enumerates the distinctive payload: metadata, per-slide transcript with timestamps, and the author's context.md. It does not explicitly name sibling tools, so the differentiation from get_presentation_spec/analytics/status relies on the reader inferring that 'context/reading' is not those read-only views.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete usage context: use this when the task is to read, summarize, cite, or answer questions from a presentation, and it clarifies that the target need not be owned by the user. It does not explicitly state when not to use it or name alternative tools for metrics/spec/status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_presentation_specGet the authoring specARead-onlyIdempotentInspect
Fetch the html-presentation/v1 authoring contract: document structure, the dual landscape/vertical layout rule, and the narration markup that makes slides speak. Call this BEFORE authoring for create_presentation — documents written without it publish with missing audio.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| spec | Yes | The full authoring recipe + format contract, markdown. |
| format | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool read-only, idempotent, and non-destructive. The description adds the important behavioral context of ordering: this must be called before create_presentation, and skipping it leads to missing audio in published documents. This is useful beyond what annotations provide and does not contradict them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences accomplish everything: the first states the resource and its scope, the second gives the critical usage directive and consequence. There is no repetition of annotation data or filler, and the key workflow warning is front-loaded into the second sentence with clear emphasis.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless, read-only fetch with an output schema available, the description is complete. It tells the agent what will be retrieved, when to call the tool, and why it matters. The missing-audio consequence communicates operational importance without requiring the description to duplicate output-schema details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so parameter semantics are essentially non-applicable; the schema carries no burden. The description instead clarifies what the fetched contract contains, which is appropriate for a no-argument tool. The baseline for zero parameters is 4, and nothing here lowers it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Fetch' and names the exact resource, the 'html-presentation/v1 authoring contract'. It then enumerates the contract's contents—document structure, the dual landscape/vertical layout rule, and narration markup—making the tool's purpose unmistakable and distinct from siblings like get_presentation_analytics or get_presentation_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit workflow directive: 'Call this BEFORE authoring for create_presentation', reinforced with a concrete consequence for skipping it ('documents written without it publish with missing audio'). It does not explicitly discuss when not to use the tool or compare it to alternatives, but the timing and purpose are clearly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_presentation_statusGet presentation statusARead-onlyIdempotentInspect
Fetch the build state and result URL for a presentationId.
| Name | Required | Description | Default |
|---|---|---|---|
| presentationId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ready | Yes | True once the presentation is viewable. |
| webUrl | No | Shareable watch URL. |
| narration | No | Narration progress: status (complete | partial | failed | …) and per-slide errors when partial/failed. |
| visibility | No | |
| publishStatus | Yes | |
| presentationId | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds no behavioral detail beyond the scope of what is fetched; it doesn't mention polling, error behavior, or URL availability timing. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence with no redundant words; the key action and target are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only, idempotent getter with one self-explanatory parameter, an output schema, and safety annotations, the description conveys the necessary purpose. The presence of an output schema means return-value detail is not the description's job.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage, so the description must compensate, but it merely restates 'for a presentationId' without adding format, source, or lifecycle context. The parameter name is self-explanatory, but the description adds essentially nothing beyond the schema property.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Fetch') and resource ('build state and result URL') scoped to a presentationId, and its focus on build status clearly separates it from siblings like get_presentation_spec, get_presentation_context, and get_presentation_analytics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for checking a presentation's build status and result URL, which gives clear context. However it does not explicitly say when to choose this over siblings, nor list alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_presentationsList your presentationsARead-onlyIdempotentInspect
List the authenticated user's presentations.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| visibility | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| presentations | Yes | Newest first. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive behavior. The description adds useful authentication scope but does not disclose pagination, default visibility behavior, or any rate-limit considerations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no redundant content. The title and description align with zero filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, read-only list operation with an output schema and safety annotations, the description covers the essential scope. It lacks minor context like pagination or filtering defaults, but nothing an agent needs to invoke the tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not compensate by explaining limit or visibility. Although the parameter names and enum are self-explanatory, the description adds no meaning beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb (List) and resource (presentations), and scopes it to the authenticated user. This clearly separates it from the get_presentation_* siblings, which target a single presentation, and from create/publish.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes clear that this is for enumerating the user's presentations, which implies the main use case. However, it does not explicitly state when to prefer it over get_presentation_* or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
publish_narrated_presentationPublish a presentation you narrated yourselfADestructiveInspect
Publish an html-presentation/v1 document using audio YOU synthesized locally (e.g. with bisque-voice) — free, unlimited, and works on macOS, Linux and Windows. Send each narrated slide's word timings and MP3 metadata; the server assembles presentation.json (recomputing cues from your narration markers) and returns one upload URL per MP3. Then PUT each file and POST the returned completeUrl with the returned files array. RE-PUBLISHING: audio is optional — any narrated slide you omit reuses the audio from the last publish whenever its narration text and speechSpeed are unchanged, so an HTML-only edit needs no synthesis at all. The response reports reused, synthesized, and staleSlides (narrated slides whose text changed and have no audio — synthesize exactly those and publish again). Use create_presentation instead to have the server narrate.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | No | URL slug; defaults to a slugified title. | |
| audio | No | One entry per slide you synthesized, from the JSON `bisque-voice` prints on stdout. `words`, `durationMs`, `size` and `hash` map across verbatim. Optional: omit a slide (or the whole array) and its audio carries forward from the previous publish if the narration text is unchanged — otherwise that slide publishes silent and is listed in `staleSlides`. A FIRST publish with nothing to carry forward is rejected. | |
| title | No | ||
| assets | No | Files the document references relative to itself — fonts, images, SVG, Lottie, Rive, bundled audio cues. html-presentation/v1 requires these to be self-hosted, so a presentation that renders locally is broken once published unless they travel with it. Each gets an upload URL back alongside the MP3s; PUT them the same way. Paths must be under `assets/` — the server owns index.html, presentation.json and context.md, and the manifest owns audio/. Omit for a presentation that references nothing. | |
| handle | No | Publish under a specific channel handle you own. | |
| voiceId | No | Records what actually spoke, e.g. kokoro:af_heart for a locally synthesized Kokoro voice. No audio is generated server-side. | |
| designMd | No | Design frontmatter mapped to theme tokens. | |
| contextMd | No | Shared-with-viewer context.md. | |
| indexHtml | Yes | Full html-presentation/v1 document (the presentation-format meta gate applies). | |
| visibility | No | unlisted (the default) is shareable by link and plays in chat-embedded players; private requires the owner to sign in, so an inline chat player shows a sign-in wall instead of playing — choose private only when the user asked for it. | unlisted |
| speechSpeed | No | Must match the speed you synthesized at — it is part of the audio cache key, so changing it on a re-publish makes every slide stale instead of carrying forward. | |
| presentationId | No | Stable id for idempotent re-publishes; defaults to slug-<hash(userId:slug)>. | |
| voiceStability | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| files | Yes | Echo back verbatim as the complete call's `files`. |
| reused | Yes | Slide keys whose audio carried forward — no upload. |
| webUrl | Yes | Shareable watch URL. |
| warnings | Yes | |
| publishId | Yes | |
| uploadUrls | Yes | One pre-signed PUT per file to upload. |
| completeUrl | Yes | POST here after every PUT, echoing `files` back verbatim. |
| staleSlides | Yes | Narrated slide keys that will publish SILENT — synthesize exactly these and publish again. |
| synthesized | Yes | Slide keys this request supplied audio for. |
| presentationId | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as destructive, so the description need not restate that. It adds useful behavior not visible in annotations: the two-step upload flow (PUT MP3s/assets then POST completeUrl), server-side cue recomputation, and re-publish carry-forward/reuse semantics with staleSlides. It is slightly less explicit about destructive overwrite effects, but the annotation covers that baseline.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well organized, front-loading the core behavior, then the upload workflow, then the RE-PUBLISHING section. A few clauses (e.g., 'free, unlimited, and works on macOS, Linux and Windows') are contextual rather than invocation-critical, but the structure keeps the important guidance easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 13 parameters, an output schema, and rich annotations, the description covers what an agent needs: the full call/response workflow, re-publish behavior, stale-slide remediation, and the alternative tool. Nothing critical for correct invocation appears to be missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 85% schema coverage, the schema carries most parameter detail; the description adds high-level meaning by explaining how the audio array and returned URLs fit into the publish workflow and by clarifying re-publish audio optionality. It does not fully compensate for the undocumented voiceStability field, but that gap is minor given the schema richness.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Publish an html-presentation/v1 document using audio YOU synthesized locally') and immediately distinguishes it from the sibling that server-narrates. It leaves no ambiguity about what this tool is for.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit selection criteria: use this for locally synthesized narration, and 'Use create_presentation instead to have the server narrate.' It also states exactly when re-publishing can omit audio, covering a major conditional use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_channelUpdate channelAIdempotentInspect
Update one of your channels. Set the description — the line a stranger reads in a search result or a link unfurl, at most 160 characters, empty to clear it and go back to naming the newest presentations. Set the avatar from an image URL, which is fetched, center-cropped square and resized. Pass either or both. Omit handle to use your default channel.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | No | Which of your channel handles to update; defaults to your default username. | |
| image_url | No | https URL of the avatar image (any common format, ≤10 MB). | |
| description | No | What the channel publishes, in the owner's words. Empty clears it. |
Output Schema
| Name | Required | Description |
|---|---|---|
| failed | No | Fields that did not apply, each with the reason. A field listed here left the channel unchanged; the ones in updated still took effect. |
| handle | Yes | |
| updated | Yes | Field names that were written. |
| channelUrl | Yes | Public channel page carrying the update. |
| description | No | The stored line, or null when the write cleared it. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reveals non-obvious behavior beyond the annotations: the avatar is fetched from a URL, center-cropped, and resized; an empty description clears the channel and reverts to auto-naming with newest presentations. This adds significant value beyond the idempotentHint annotation and helps an agent predict side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but economical, using three sentences to cover scope, each field's semantics, and the optional/default behavior. Every sentence contributes new information, and the core 'update one of your channels' framing is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only three optional parameters, no enums, an output schema present, and annotations covering idempotency and safety, the description supplies everything an agent needs to call the tool correctly. It explains defaults, field combinations, clear behavior, and image processing without requiring the agent to infer anything.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Even though the schema already documents all three parameters, the description enriches each one: it explains what the description line appears in, what empty means behaviorally, and how the avatar image is processed. This goes well beyond the parameter descriptions and disambiguates edge cases like clearing the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Update one of your channels,' naming a specific verb and resource, and immediately scopes it to owned channels. It distinguishes the operation from presentation-focused siblings by talking exclusively about channel metadata. No ambiguity remains about what the tool is for.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear practical context: pass either or both fields, and omit handle to target the default channel. There are no alternative channel-update tools among the siblings, so a when-not-to-use note is unnecessary. The guidance is useful but stops short of explicitly contrasting with alternative operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user or an account that owns the GitHub organization, then choose Claim with GitHub.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
List, share, upload, and manage Slideless HTML presentations from any MCP host.
Upload AI-written HTML presentations and manage expiring, revocable share links over OAuth.
Publish and manage existing HTML presentations from an MCP-capable Agent.
Render HTML, Markdown, or URLs to images, PDF, or branded artifacts; extract and watch pages.
Related MCP Servers
FlicenseAqualityDmaintenanceGenerate PowerPoint presentations using the Slidespeak API714- FlicenseNot gradedqualityCmaintenanceEnables generating finished MP3 podcast audio from scripts using local TTS engines, with configurable voices and speech speed, plus text-to-speech and voice listing tools.
- FlicenseAqualityAmaintenanceRecords narrated walkthroughs of any webapp by orchestrating Playwright, speech-mcp TTS, and FFmpeg composition.61
- FlicenseNot gradedqualityCmaintenanceConverts slide-oriented HTML into editable PowerPoint files via an MCP server, using Chromium for layout measurement and supporting editable text, shapes, images, and raster fallbacks.