Twistly
Server Details
Create designed PowerPoint presentations from a topic, text, or a PDF, DOCX, PPTX or TXT file.
- Status
- Healthy
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 4 tools
The three create tools are mostly distinct by input type (file, text, topic), but create_from_file also accepts a text field, making it overlap with create_from_text. The detailed descriptions help clarify intent, so ambiguity is limited.
All tool names follow a clear snake_case verb_noun pattern: create_from_file, create_from_text, create_from_topic, and get_job_status. The create_* group is perfectly parallel and get_job_status matches the same convention.
Four tools is well-scoped for a focused presentation-generation server. Each creation mode plus a status endpoint earns its place without unnecessary bloat or redundancy.
The server covers the full core workflow: submit a generation job, poll status, and retrieve the result URL. Missing cancellation or job listing are minor gaps since jobs are fire-and-forget and persist under the same job_id.
Available Tools
4 toolscreate_from_fileCreate presentation from a fileAInspect
Submit an async job that generates a presentation from a PDF, PPTX, DOCX, or TXT document. The document arrives in exactly one of the following ways. file: an attachment reference the host fills in for a document the user attached. The server fetches the bytes from it directly, so the document never passes through the conversation and its size is not a limit. The object is valid only as the host produced it — there is no way to compose one from the conversation. text: the document’s full content, with filename alongside it. This client has no way to hand an attached document to a tool, so its content reaches the server only through this field. The text is the entire source of the presentation — the backend sees nothing else, so summarised or truncated text yields a correspondingly reduced deck. file_url: an https URL the server downloads itself (with mime_type). file_base64: the encoded bytes (with mime_type), for small files. Returns a job_id; the result is read with get_job_status under that id.
| Name | Required | Description | Default |
|---|---|---|---|
| file | No | ||
| text | No | The document's full content as text. It is the only form in which this client's attachments reach a tool, and the only source the presentation is built from. | |
| format | No | ||
| file_url | No | ||
| filename | No | ||
| language | No | ||
| template | No | 'auto' (the default) has Twistly rank its built-in templates against the content and use the best match. Pass a template name only when the user explicitly asks for a specific one. | auto |
| mime_type | No | ||
| verbosity | No | How much text each slide carries: "short" for concise slides, "detailed" for fuller prose, "bulletPoints" for bulleted lists. Omit to let Twistly decide. | |
| num_slides | No | Number of slides. Omit this field (or pass -1) to let Twistly choose the best count automatically — do this whenever the user did not request a specific number. Pass 1-50 only when the user explicitly asked for that many. | |
| file_base64 | No | ||
| image_style | No | ||
| image_source | No | Where slide images come from. 'auto' (the default) generates AI images — keep it unless the user explicitly asks otherwise. Use 'pexels' or 'unsplash' ONLY when the user explicitly asks for stock photos, and 'scrapingdog' only when they ask for images found on the web. Not to be confused with image_style, which only styles AI-generated images. | auto |
| text_density | No | ||
| content_modificator | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| job_id | Yes | |
| status | Yes | |
| created_at | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the job is asynchronous, that it returns a job_id, and that results must be read via get_job_status. It also adds meaningful detail about server-side fetching, file size limits, and how the text field is the sole source for presentation content when used. This goes well beyond the annotations, which only signal non-read-only, non-destructive, non-idempotent behavior.
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 lengthy but information-denseaging. It front-loads the purpose and then systematically explains each input delivery method with clear delimiters. A few sentences are somewhat verbose, but they all carry relevant behavioral or usage information for correctly invoking the tool.
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 tool with 15 optional parameters, no required parameters, and an output schema, the description covers the essential invocation flow, async behavior, and result retrieval. It could optionally explain more about the more obscure enums (e.g., content_modificator, text_density, image_style), but the output schema and enum names provide enough grounding for an agent to make reasonable choices.
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 schema description coverage at 33%, the description compensates well for the most important parameters: file, text, file_url, and file_base64. It explains the provenance and behavior of each input mode, including critical caveats like the file object being valid only as the host produced it and text being the entire source for the presentation. Some parameters like image_style, text_density, and content_modificator remain undocumented in the description, but the description adds substantial meaning beyond the schema for core inputs.
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 states the tool's core purpose: submitting an async job that generates a presentation from a PDF, PPTX, DOCX, or TXT document. It is specific about the resource (presentation creation) and the input formats, though it does not explicitly differentiate itself from siblings like create_from_text or create_from_topic.
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 provides clear context about when to use this tool, especially the different ways a document can be supplied (file attachment, text, URL, base64). It also explains important constraints, such as the client having no way to hand an attached document to a tool except via the text fieldcompress. However, it does not explicitly state when to prefer a sibling tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_from_textCreate presentation from textAInspect
Submit an async job that turns provided text into a presentation. Returns a job_id; the result is read with get_job_status under that id. Very long text is rejected by the backend token limit.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| format | No | ||
| language | No | ||
| template | No | 'auto' (the default) has Twistly rank its built-in templates against the content and use the best match. Pass a template name only when the user explicitly asks for a specific one. | auto |
| verbosity | No | How much text each slide carries: "short" for concise slides, "detailed" for fuller prose, "bulletPoints" for bulleted lists. Omit to let Twistly decide. | |
| num_slides | No | Number of slides. Omit this field (or pass -1) to let Twistly choose the best count automatically — do this whenever the user did not request a specific number. Pass 1-50 only when the user explicitly asked for that many. | |
| image_style | No | ||
| image_source | No | Where slide images come from. 'auto' (the default) generates AI images — keep it unless the user explicitly asks otherwise. Use 'pexels' or 'unsplash' ONLY when the user explicitly asks for stock photos, and 'scrapingdog' only when they ask for images found on the web. Not to be confused with image_style, which only styles AI-generated images. | auto |
| text_density | No | ||
| content_modificator | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| job_id | Yes | |
| status | Yes | |
| created_at | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavior beyond the annotations: the operation is async, returns a job_id, requires a follow-up get_job_status call, and rejects overly long text due to backend token limits. The annotations do not cover these details)Skip focusing on behavior that the annotations already provide, so this is valuable.
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 front-loads the action, then the return/retrieval flow, then the key constraint. Every sentence contributes useful information.
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 an async, multi-parameter tool, the description covers the essential call flow and a key failure condition. An output schema exists, so not explaining return values in detail is acceptable. The main remaining gap is that it doesn't point to sibling tools for non-text inputs, but the provided information is sufficient for correct invocation.
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 only 40%, so the description should compensate by clarifying parameter meanings, but it only mentions the text input and its token limit. It does not explain format, language, template behavior, verbosity, num_slides defaults, image_source versus image_style, text_density, or content_modificator, leaving a significant semantic gap.
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 action ('Submit an async job') and resource ('turns provided text into a presentation'), making the core purpose clear. It also links the job_id flow to get_job_status, but it does not explicitly distinguish itself from the sibling tools create_from_file and create_from_topic beyond the 'text' wording.
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 operational context: the call is asynchronous, returns a job_id, and the result must be retrieved via get_job_status. It also warns about the backend token limit. It stops short of explicitly stating when to use create_from_file or create_from_topic instead, so it lacks full exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_from_topicCreate presentation from a topicAInspect
Submit an async job that generates a presentation from a short topic prompt. Returns a job_id; the result is read with get_job_status under that id.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes | ||
| format | No | ||
| content | No | ||
| language | No | ||
| template | No | 'auto' (the default) has Twistly rank its built-in templates against the content and use the best match. Pass a template name only when the user explicitly asks for a specific one. | auto |
| num_slides | No | Number of slides. Omit this field (or pass -1) to let Twistly choose the best count automatically — do this whenever the user did not request a specific number. Pass 1-50 only when the user explicitly asked for that many. | |
| image_style | No | ||
| image_source | No | Where slide images come from. 'auto' (the default) generates AI images — keep it unless the user explicitly asks otherwise. Use 'pexels' or 'unsplash' ONLY when the user explicitly asks for stock photos, and 'scrapingdog' only when they ask for images found on the web. Not to be confused with image_style, which only styles AI-generated images. | auto |
| tone_and_style | No | ||
| target_audience | No | ||
| presentation_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| job_id | Yes | |
| status | Yes | |
| created_at | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=false. The description adds value by explaining the async job lifecycle: it submits a job, returns a job_id, and the result is read later via get_job_status. This goes beyond the annotations by clarifying the asynchronous nature and the follow-up step needed to obtain the output.
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 exactly two sentences with no filler. The primary action is front-loaded ('Submit an async job that generates a presentation from a short topic prompt'), and the key return/retrieval detail is in the second sentence. Every word earns its place.
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 complex tool with 11 parameters and an async pattern, the description covers the essential workflow: submit a topic, get a job_id, and retrieve results via get_job_status. The rich input schema and output schema cover the detailed parameter options. It could hint at the variety of customization parameters, but the core call flow is sufficiently explained.
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 only 27%, so the description must compensate. The only parameter it clarifies is the required 'topic' (calling it a 'short topic prompt'); the other 10 parameters (format, content, language, template, num_slides, image_style, image_source, tone_and_style, target_audience, presentation_type) are not addressed at all. This is a significant gap for an 11-parameter tool.
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 action ('Submit an async job that generates a presentation') and a clear input resource ('from a short topic prompt'). It also distinguishes the tool from its siblings by naming the topic-based input and the job_id/get_job_status retrieval pattern, making it easy for an agent to tell it apart from create_from_file and create_from_text.
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 provides clear usage context: use this when you have a short topic prompt, and follow up with get_job_status to retrieve the result. However, it does not explicitly state when to avoid this tool in favor of create_from_file or create_from_text, nor does it mention any exclusions. Clear context but no explicit alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_job_statusGet presentation job statusARead-onlyIdempotentInspect
Return the current status of a generation job. A completed job carries result.url, a direct download link to the generated .pptx file. Generation runs for minutes: with wait=true the call holds open until the job settles or ~45 seconds pass, with wait=false it answers with the status at that moment. A job that is still processing when the call returns keeps running and stays readable under the same job_id.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | true holds the call open until the job settles or ~45 seconds pass, so a job that finishes inside that window is covered by a single call. false answers immediately with the status at that moment. | |
| job_id | Yes | The job_id returned by a create_* tool. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| job_id | Yes | |
| result | No | |
| status | Yes | |
| message | No | |
| template | No | The template the deck is being/was built with; appears once resolved. |
| created_at | Yes | |
| completed_at | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, the description adds essential behavior: jobs can run for minutes, wait=true holds the call open up to ~45 seconds, wait=false returns immediately, and an in-progress job continues under the same job_id. This meaningfully enriches the annotation-only view without contradicting it.
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 sentences, each earning its place: the core purpose, the output signal, and the wait behavior. The most important fact is front-loaded, and the later sentences expand on operational details without redundancy.
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 rich annotations, a complete schema, and an output schema present, the description covers the remaining operational nuance: long-running generation, wait-timeout behavior, and persistence after return. Nothing needed for correct invocation 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 100%, so the parameters already carry their meaning. The description reinforces the wait semantics and ties job_id to create_* tools, but it does not add materially new parameter-level information beyond what the schema already states.
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 a specific verb and resource: 'Return the current status of a generation job.' It further defines what a completed job returns (result.url, direct .pptx link), clearly separating it from the sibling create_* tools, which are about launching jobs rather than checking them.
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 context for when this tool is relevant—checking generation jobs—and explains the two wait modes so an agent can choose the right behavior. It does not explicitly name exclusions or alternatives, but given that all siblings are creation tools, no alternative is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
- First observed
create_from_file - First observed
create_from_text - First observed
create_from_topic - First observed
get_job_status
Related MCP Connectors
Generate polished PowerPoint presentations from text prompts, YouTube videos, or structured outlin…
Generate, edit, and export AI presentations to PDF, PPTX, or a shareable link.
Generate professional PowerPoint presentations from text, YouTube videos, or structured JSON data.…
Create polished slide decks from text or YouTube links in seconds. Fetch video transcripts to tran…
Related MCP Servers
- AlicenseAqualityFmaintenanceGenerate professional AI-powered presentations from a topic, raw text, or document file. Export to PPTX, PDF, image, or shareable link.51MIT
- AlicenseNot gradedqualityCmaintenanceCreates professional PowerPoint presentations from Markdown or JSON with intelligent layout recommendations, rich content support including tables and images, and automatic template selection based on content analysis.7Apache 2.0
- FlicenseNot gradedqualityDmaintenanceGenerates PowerPoint presentations from templates using AI, injecting text and images based on schema definitions.1-
- MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.