Skip to main content
Glama

CREPE — Compile, Research, Export, Presentation Engine

CREPE is a specialized Model Context Protocol (MCP) server designed primarily for Goose (and fully compatible with other MCP-compliant agents such as Claude Desktop, Antigravity / AGY CLI, and Cursor). It equips AI agents with the tools to draft academic slide decks in Pandoc Markdown, compile publication-grade Beamer PDFs or PowerPoint decks, author multi-chapter A4 research reports, format multi-sheet Excel workbooks, validate and export Draw.io architecture diagrams, and conduct academic literature searches across Semantic Scholar, arXiv, Wikipedia, and the live web.


How It Works

CREPE sits between your AI agent and your system's underlying compilation, rendering, and research tools, exposing stateful in-memory builder engines through standard MCP protocols:

flowchart TD
    subgraph ClientLayer["AI Agent Host"]
        Agent["Goose / AI Agent (MCP Client)"]
    end

    subgraph FastMCPLayer["CREPE Modular FastMCP 3.X Layer"]
        Pres["crepe-presentations<br/>(15 tools)"]
        Docs["crepe-documents<br/>(12 tools)"]
        Research["crepe-research<br/>(6 tools)"]
        Sheets["crepe-spreadsheets<br/>(4 tools)"]
        Diagrams["crepe-diagrams<br/>(3 tools)"]
    end

    subgraph SystemTools["System CLI Engines"]
        Pandoc["Pandoc + LuaLaTeX<br/>(PDF, PPTX, DOCX)"]
        LibreOffice["LibreOffice + PyMuPDF<br/>(PNG Slide Rasterization)"]
        Chromium["Headless Chromium<br/>(Dynamic Web Scraping)"]
        DrawioCLI["draw.io Desktop<br/>(Vector/PNG Export)"]
    end

    subgraph ExternalAPIs["External Research & Web APIs"]
        SemScholar["Semantic Scholar API<br/>(Literature & Citations)"]
        ArxivAPI["arXiv API<br/>(Preprints)"]
        TavilyAPI["Tavily Search API<br/>(Live Web Search)"]
        WikiAPI["Wikipedia REST API<br/>(Encyclopedic Knowledge)"]
    end

    subgraph PythonEngines["Internal Python Engines & Linters"]
        OpenPyXL["openpyxl Engine<br/>(Formatted Spreadsheets)"]
        Linters["In-Memory Linters<br/>(AST & Syntax Validation)"]
    end

    %% Client connections
    Agent --> Pres
    Agent --> Docs
    Agent --> Research
    Agent --> Sheets
    Agent --> Diagrams

    %% Sub-server specific connections
    Pres --> Linters
    Pres --> Pandoc
    Pres --> LibreOffice

    Docs --> Linters
    Docs --> Pandoc
    Docs --> LibreOffice

    Research --> SemScholar
    Research --> ArxivAPI
    Research --> TavilyAPI
    Research --> WikiAPI
    Research --> Chromium

    Sheets --> OpenPyXL

    Diagrams --> Linters
    Diagrams --> DrawioCLI

    %% Nord Theme High-Contrast Node Styling
    classDef client fill:#5E81AC,stroke:#ECEFF4,stroke-width:2px,color:#ECEFF4;
    classDef pres fill:#81A1C1,stroke:#2E3440,stroke-width:1.5px,color:#2E3440;
    classDef docs fill:#88C0D0,stroke:#2E3440,stroke-width:1.5px,color:#2E3440;
    classDef research fill:#8FBCBB,stroke:#2E3440,stroke-width:1.5px,color:#2E3440;
    classDef sheets fill:#A3BE8C,stroke:#2E3440,stroke-width:1.5px,color:#2E3440;
    classDef diagrams fill:#B48EAD,stroke:#2E3440,stroke-width:1.5px,color:#2E3440;
    classDef engine fill:#81A1C1,stroke:#2E3440,stroke-width:1.5px,color:#2E3440;
    classDef api fill:#A3BE8C,stroke:#2E3440,stroke-width:1.5px,color:#2E3440;
    classDef internal fill:#EBCB8B,stroke:#2E3440,stroke-width:1.5px,color:#2E3440;

    class Agent client;
    class Pres pres;
    class Docs docs;
    class Research research;
    class Sheets sheets;
    class Diagrams diagrams;
    class Pandoc,LibreOffice,Chromium,DrawioCLI engine;
    class SemScholar,ArxivAPI,TavilyAPI,WikiAPI api;
    class OpenPyXL,Linters internal;

    %% Major Subgraph Containers (Distinct Nord Backgrounds & Bold Accent Borders)
    style ClientLayer fill:#2E3440,stroke:#88C0D0,stroke-width:2px,color:#ECEFF4;
    style FastMCPLayer fill:#242933,stroke:#81A1C1,stroke-width:2px,color:#ECEFF4;
    style SystemTools fill:#2E3440,stroke:#5E81AC,stroke-width:2px,color:#ECEFF4;
    style ExternalAPIs fill:#2E3440,stroke:#A3BE8C,stroke-width:2px,color:#ECEFF4;
    style PythonEngines fill:#2E3440,stroke:#B48EAD,stroke-width:2px,color:#ECEFF4;

    %% Link Styling (Bright Frost Cyan)
    linkStyle default stroke:#88C0D0,stroke-width:1.6px;

Related MCP server: agent-reader

FastMCP Architecture

Built natively on FastMCP (3.x and 4.x are both supported; the dependency is pinned >=3.0,<5), CREPE provides high-reliability agentic pair-authoring:

  • Modular Context Efficiency: Five independent sub-servers allow agents to mount only the tools required for a specific task, keeping LLM context windows lean and focused.

  • Embedded Agent Instructions: Initialization prompts inject strict Pandoc Markdown rules, preventing LaTeX syntax hallucinations and formatting errors.

  • Deterministic Concurrency: FIFO ticket locks and expected_slide_count guards prevent race conditions when agents spawn concurrent sub-agents to draft sections simultaneously.

  • Live Inspectable Resources: Real-time URIs (presentation://{id}/source, document://{id}/config) enable instant state inspection without tool-call overhead.

  • Scaffolding Prompts: Standard prompt templates (academic_presentation, technical_report, spreadsheet_model, drawio_diagram) bootstrap complex project structures.


Sub-Servers & Tools Overview (40 Tools Total)

Sub-server

Command Entry Point

Tools

Primary Domain

Presentations

venv/bin/crepe-presentations

15

Slide deck authoring, Beamer/PPTX compilation, PNG rendering

Documents

venv/bin/crepe-documents

12

A4 reports and papers, LaTeX/DOCX compilation, PNG rendering

Research

venv/bin/crepe-research

6

Semantic Scholar, arXiv, Tavily web search, Wikipedia

Spreadsheets

venv/bin/crepe-spreadsheets

4

Styled Excel workbooks (.xlsx), Markdown table conversion

Diagrams

venv/bin/crepe-diagrams

3

Draw.io XML inspection, linting, and headless image export

Monolith

venv/bin/crepe-mcp

40

Unified server providing all 40 tools in a single process

1. Presentations (crepe-presentations — 15 tools)

Stateful, incremental slide deck builder that compiles Pandoc Markdown into Beamer PDF presentations or PowerPoint files.

  • Deck Lifecycle: create_presentation, duplicate_presentation, cleanup_presentation, list_presentations, get_presentation.

  • Slide Manipulation: set_slide (append or insert at index), get_slide, move_slide, delete_slide, update_presentation_metadata.

  • Source Synchronization: export_presentation_source, import_presentation_source (round-trip markdown editing).

  • Compilation & Verification: compile_presentation (Beamer PDF / PPTX), render_slides_as_pngs (high-DPI PNG verification), lint_presentation.

2. Documents (crepe-documents — 12 tools)

Hierarchical report and article authoring engine for structured academic documents.

  • Document Management: create_document, get_document, list_documents, cleanup_document, update_document_metadata.

  • Section Structuring: set_chapter, set_section (nested subsection support), delete_chapter.

  • Compilation & Output: export_document_source, compile_document (LuaLaTeX PDF / DOCX), render_document_as_pngs, lint_document.

3. Research & Web Discovery (crepe-research — 6 tools)

Literature discovery and live web extraction with built-in rate limit handling.

  • Academic Papers: academic_search (queries Semantic Scholar API with citation counts and rate-limit backoff), arxiv_search (queries arXiv API for recent preprints).

  • Encyclopedic Knowledge: wikipedia_search (finds relevant topics), wikipedia_read (extracts clean text body).

  • Web Retrieval: web_search (Tavily search integration), fetch_webpage (extracts clean markdown with headless Chromium fallback).

4. Spreadsheets (crepe-spreadsheets — 4 tools)

Programmatic workbook creation with styling, number formatting, and table transformation.

  • Workbook Builder: create_excel (multi-sheet workbooks with column types, colors, and headers), update_excel_sheet (append rows or update cells).

  • Inspection & Ingestion: inspect_excel (reads sheets, dimensions, and previews), markdown_table_to_excel (converts markdown tables directly to styled .xlsx).

5. Diagrams (crepe-diagrams — 3 tools)

Inspection, deep linting, and export for .drawio diagram files.

  • Validation: inspect_drawio (metadata and page structure), lint_drawio (validates cell hierarchy, decompresses XML, checks base IDs).

  • Export: export_drawio (headless rasterization to transparent high-DPI PNG, SVG, or PDF).


Setup & Configuration

CREPE includes an automated installer script (setup.py) that detects your system dependencies, registers extensions into Goose (and other agents), and configures environment variables.

Automated Setup

# Standard installation for Goose and detected agents
./setup.py --install

# Install specifically for Goose
./setup.py --install --target goose

# Install as a single monolith server (40 tools) instead of 5 sub-servers
./setup.py --install --legacy

# Enable all 5 sub-servers up front — REQUIRED for ACP providers such as
# claude-acp, gemini-cli, cursor-agent or codex, which cannot reach Goose's
# Extension Manager to switch a disabled sub-server on. See "Sub-server
# enablement" below.
./setup.py --install --target goose --enable-all

# Non-interactive installation with API keys and custom paths
./setup.py --install -y \
  --tavily-key "tvly-..." \
  --ss-key "your-semantic-scholar-key" \
  --browser-path "/usr/bin/chromium"

# Uninstall CREPE from all agent configs and shell profiles
./setup.py --uninstall

CLI Options & Configuration Flags

Flag

Argument

Default

Description

--install

True

Register CREPE MCP servers with client configurations

--uninstall

False

Remove CREPE MCP servers and clean up profile entries

--target

goose claude agy all

all

Specify which agent configurations to update

--legacy

False

Install as monolith (crepe-mcp) rather than 5 modular sub-servers

--enable-all

False

Goose only: register every sub-server as enabled. Use with ACP providers (claude-acp, gemini-cli, cursor-agent, codex)

-y, --non-interactive

False

Accept all defaults and flags without interactive prompts

--tavily-key

KEY

""

Tavily API Key for live web search

--ss-key

KEY

""

Semantic Scholar API Key for literature searches

--browser-path

PATH

auto

Absolute path to Chromium/Chrome binary for JS page rendering

--libreoffice-path

PATH

auto

Path to LibreOffice binary for PPTX slide rasterization

--drawio-path

PATH

auto

Path to draw.io desktop binary for diagram export

Sub-server enablement

setup.py --install registers all five sub-servers but leaves only crepe-research enabled. The other four are written with enabled: false plus a description naming their tools and trigger, which Goose's Extension Manager reads to switch them on when a task needs them. That keeps ~88% of CREPE's tool schema (~4.6k tokens) out of the context window at session start.

This gating does not work under ACP providers. With claude-acp, gemini-cli, cursor-agent or codex, Goose is not the agent — it delegates the loop to an external tool and forwards its extensions over ACP. Only type: mcp extensions survive that hop; the Extension Manager is type: platform, so the agent never sees manage_extensions and can never enable a disabled sub-server.

Measured on Goose 1.49.0 with an identical "build a deck" prompt:

Provider

Sub-servers

Outcome

claude-acp

4 disabled

9 fruitless tool searches, nothing produced

claude-acp

all enabled

1 tool search, then the deck compiled

native (e.g. a custom OpenAI-compatible provider)

4 disabled

agent called manage_extensions, enabled them, compiled

So install with --enable-all whenever the active provider is ACP-based:

./setup.py --install --target goose --enable-all

Nothing is lost. ACP hosts defer MCP tool schemas behind their own tool-search and fetch them only on use, so the expensive part (~21 KB / ~5.2k tokens across the 40 tools) still stays out of context — the same saving, made by the host rather than by Goose. Keep the default gated layout only for native Goose providers, where Goose loads every enabled schema up front.

Environment Variables

Variable

Required For

Default / Auto-detection

CREPE_TAVILY_API_KEY

web_search tool

Prompts during setup or reads environment

CREPE_SEMANTIC_SCHOLAR_API_KEY

academic_search rate limits

Optional (public tier used if unset)

CREPE_HEADLESS_BROWSER_PATH

JavaScript-heavy fetch_webpage

Auto-detected from Chromium / Chrome / Brave

CREPE_LIBREOFFICE_PATH

PPTX to PNG rendering

Auto-detected (libreoffice on PATH or Mac App)

CREPE_DRAWIO_PATH

Headless diagram export

Auto-detected (drawio / draw.io on PATH)


System Requirements

  • Python: >=3.12

  • Pandoc: >=3.0 (required for markdown compilation to PDF, PPTX, DOCX)

  • LuaLaTeX / TeX Live: texlive-full or MacTeX (required for PDF compilation)

  • LibreOffice: (Optional / recommended) For rasterizing PPTX slides to PNG sequences

  • Draw.io Desktop: (Optional / recommended) For headless .drawio diagram export


Documentation & References


License

MIT © Mário Antunes

Available Tools

17 tools
cleanup_presentationB

Delete a presentation's in-memory state and on-disk scratch dir.

ParametersJSON Schema
NameRequiredDescriptionDefault
presentation_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It explicitly states that the tool deletes in-memory state and on-disk scratch dir, which clearly communicates the destructive scope and implies non-destruction of the presentation itself. However, it does not mention idempotency, error behavior, or whether the presentation becomes unusable after cleanup, leaving some uncertainty.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no wasted words. It efficiently conveys the operation and its targets, making it both brief and clear.

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

Completeness3/5

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

Given that an output schema exists, return values are likely covered. The description provides the core operation but lacks usage guidance, edge-case behavior, and prerequisites. For a one-parameter cleanup tool, this is minimally viable but not comprehensive, especially considering the lack of annotations.

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

Parameters2/5

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

The schema has no descriptions for presentation_id (0% coverage). The description references 'a presentation' but does not explicitly explain the parameter's meaning beyond the parameter name itself. It does not clarify the format, required context, or relationship to other objects. The description adds minimal value in compensating for the missing schema descriptions.

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?

The description identifies a specific verb ('Delete') and a precise resource ('presentation's in-memory state and on-disk scratch dir'). This clearly distinguishes it from sibling tools like create_presentation, get_presentation, or delete_slide, which operate on the presentation or slides themselves. The scope of deletion is explicit, leaving no ambiguity about what this tool does.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention typical workflow positions (e.g., after render_slides_as_pngs or export_presentation_source), nor does it note any exclusions or sibling tools that might be more appropriate for similar tasks. The intended usage is only implicit in the name 'cleanup'.

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

compile_presentationA

Compile the in-memory presentation to PDF or PPTX, writing directly to output_path (absolute). Call render_slides_as_pngs afterwards to validate visually.

format : 'pdf' (Beamer/lualatex) or 'pptx' (PowerPoint). theme : any Beamer theme name installed on this system (PDF only), default 'moloch'. highlight_style : code highlight style, default 'tango'. reference_doc : path to a .pptx template (PPTX only, optional).

ParametersJSON Schema
NameRequiredDescriptionDefault
themeNomoloch
formatYes
output_pathYes
reference_docNo
highlight_styleNotango
presentation_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It discloses that the tool writes directly to an absolute output_path, compiles the in-memory presentation, and distinguishes PDF vs PPTX behavior. However, it doesn't mention whether existing files are overwritten, permission requirements, potential errors (e.g., missing lualatex), or side effects beyond file creation.

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

Conciseness5/5

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

The description is compact and well-structured, with the main action and follow-up step in two sentences, followed by a tight parameter list. No wasted words; every line adds value.

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?

For a tool with 6 parameters and no annotations, the description covers the core workflow, output formats, and parameter constraints. The presence of an output schema reduces the need to explain return values. However, the missing presentation_id explanation and lack of error/overwrite behavior keep it from being fully complete.

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 description coverage is 0%, so the description must explain parameters. It does explain output_path (absolute), format ('pdf' or 'pptx'), theme (Beamer theme, PDF only, default 'moloch'), highlight_style (default 'tango'), and reference_doc (pptx template, optional). The required presentation_id is omitted, but all other parameters receive meaningful context beyond their raw schema types.

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?

The description uses a specific verb ('Compile') and resource ('the in-memory presentation') while specifying the output formats (PDF or PPTX) and destination. It clearly distinguishes itself from sibling tools like export_presentation_source (source export) and render_slides_as_pngs (image rendering).

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 explicitly advises calling render_slides_as_pngs afterwards for visual validation, and gives format-specific constraints (theme for PDF only, reference_doc for PPTX only). However, it doesn't explicitly state when to choose this tool over alternatives like export_presentation_source, leaving some room for ambiguity.

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

create_presentationA

Create a new, empty presentation; returns presentation_id, required by every other Group-A tool. All title-slide metadata is set here: title, optional subtitle, author, institute, date.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo2026
titleYes
authorNoMário Antunes
subtitleNo
instituteNoUniversidade de Aveiro

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the transparency burden. It clearly indicates this is a creation operation (write behavior) and discloses that an empty presentation is created, returning an ID. It also notes that metadata is set here. It lacks explicit side-effect details (e.g., persistence, error conditions) but adequately conveys the core behavior.

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

Conciseness5/5

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

The description is two sentences, front-loading the primary purpose in the first clause. Every sentence adds value: the first states the action and return value, the second frames the parameters as title-slide metadata. No redundant or filler content.

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?

The tool has an output schema, so return value details are not needed, but the description adds the key integration fact that the returned ID is required by other tools. For a simple create operation, it covers the essential context: the resource, the metadata parameters, and the prerequisite role. Minor gaps around error handling and edge cases keep it from a perfect score.

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 description coverage is 0%, so the description must compensate. It enumerates all five parameters (title, optional subtitle, author, institute, date) and labels them as 'title-slide metadata', adding semantic meaning beyond the parameter names. It could provide more detail on formats or interactions, but this is sufficient for self-explanatory parameters.

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?

The description uses the specific verb 'Create' with the resource 'presentation' and specifies it creates an 'empty' presentation, clearly distinguishing it from siblings like list_presentations or update_presentation_metadata. It also mentions the return value and that it's required by other tools, uniquely identifying its role.

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?

The description explicitly states the returned presentation_id is 'required by every other Group-A tool', signaling that this tool should be used first as the creation entry point. It also says 'All title-slide metadata is set here', providing guidance on when to use it for initial setup. It doesn't mention alternatives but none are obvious for creation.

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

delete_slideA

Remove a slide by index. Slides after it shift down by one.

expected_slide_count : optional, same stale-state guard as set_slide.

ParametersJSON Schema
NameRequiredDescriptionDefault
indexYes
presentation_idYes
expected_slide_countNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses the shifting behavior and the optional expected_slide_count guard, but does not detail consequences like irreversibility or index out-of-bounds handling. This is partial disclosure.

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

Conciseness5/5

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

The description is two sentences with no fluff, front-loading the primary action and adding the guard parameter note. Very efficient.

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?

For a simple delete tool, the description covers the main purpose, a behavioral effect, and an optional parameter. It doesn't cover edge cases or return values, but the output schema exists. Overall, it's fairly complete.

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?

With 0% schema description coverage, the description explains the 'index' parameter by reference and the 'expected_slide_count' as a stale-state guard, but does not elaborate on 'presentation_id'. This partial compensation warrants a 3.

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?

The description clearly states 'Remove a slide by index' which is a specific verb and resource, and the effect on subsequent slides distinguishes it from sibling tools like get_slide or set_slide. No 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?

The description implies usage by describing the destructive action, but does not explicitly state when to use it versus alternatives like cleanup_presentation. It provides clear context for the expected_slide_count guard, but lacks explicit when-to-use or exclusion guidance.

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

export_presentation_sourceA

Return the pandoc source (slides Markdown + config.yml) this presentation compiles from.

output_dir : if given (absolute path), also writes slides.md/config.yml there. theme/highlight_style : same meaning as compile_presentation.

ParametersJSON Schema
NameRequiredDescriptionDefault
themeNomoloch
output_dirNo
highlight_styleNotango
presentation_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the transparency burden. It explicitly discloses the optional side effect of writing files when output_dir is provided, and clarifies the default behavior is returning source. However, it leaves the effect of theme/highlight_style on the output unclear, which slightly reduces transparency.

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

Conciseness5/5

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

The description is three sentences: a clear purpose statement, output_dir behavior, and a parameter cross-reference. It is front-loaded, with no fluff or redundant information.

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

Completeness3/5

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

The description covers the core purpose and one side effect, and an output schema exists to explain return values. However, it omits the required presentation_id parameter and provides vague parameter semantics, making it only partially complete for a 4-parameter tool.

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

Parameters2/5

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. It explains output_dir's write behavior well, but theme/highlight_style are only cross-referenced to compile_presentation, and presentation_id is not mentioned at all. The required parameter and theme semantics are left ambiguous.

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?

The description clearly states the tool returns the pandoc source (slides Markdown + config.yml) for a presentation. The verb 'Return' and resource specification distinguish it from siblings like compile_presentation and import_presentation_source.

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?

The description implies use when the raw source is needed, but it doesn't provide explicit when-to-use/when-not-to-use guidance or name alternatives. The phrase 'this presentation compiles from' hints at the relationship, but no exclusions or explicit alternatives are given.

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

fetch_webpageA

Extract readable plain text from a URL (http/https only). Uses the browser at CREPE_HEADLESS_BROWSER_PATH (--headless=new --dump-dom) if set, else falls back to urllib + HTML stripping with a warning.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
max_charsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses key behavioral traits: the use of a headless browser if a specific path is set, the fallback to urllib with a warning, and the http/https restriction. This adds useful context beyond the schema, though it doesn't mention error handling or max_chars behavior.

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

Conciseness5/5

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

The description is two sentences, front-loads the primary action, and every clause adds value. It is concise without being under-specified, achieving high information density in minimal text.

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?

Given the output schema exists (so return values are documented) and the tool is simple, the description covers the main purpose, protocol restriction, and implementation fallback. However, it could mention the max_chars parameter's effect or potential failure modes, but overall it is fairly complete for the tool's complexity.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must explain the parameters. It does not mention max_chars at all, and even the url parameter's format is only implied by the http/https restriction. The tool has 2 parameters, and the description adds no semantic value over the bare schema, leaving a significant gap.

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?

The description clearly states the tool extracts readable plain text from a URL, specifies the http/https restriction, and distinguishes it from sibling search tools by focusing on raw URL fetching. The verb 'extract' is specific and the resource (URL) is clear.

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?

The context of when to use this tool is implicit: when you need to retrieve plain text from a specific URL. It doesn't explicitly exclude alternatives or mention sibling tools, but the purpose is clear enough that an agent would know not to use it for search or presentations. Lacks explicit when-not guidance, but clear context earns a 4.

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

get_presentationA

Return a presentation's metadata, ordered slide list (index, id, title, 200-char content preview), and which compiled artifacts exist.

ParametersJSON Schema
NameRequiredDescriptionDefault
presentation_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description must disclose behavior on its own. It clarifies that this is a read operation (via 'Return') and provides specific details about the returned data, including slide previews and artifact existence. This goes beyond a generic description.

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

Conciseness5/5

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

The description is a single concise sentence that front-loads the core action ('Return') and packs specific, useful details without wasted words. Every component earns its place.

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?

For a simple read-only tool with one parameter, the description adequately covers the essential aspects of the response (metadata, slide list, artifacts). It does not mention error handling or pagination, but these are not critical for this straightforward operation.

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?

The single parameter 'presentation_id' is not described in the schema and the description does not explicitly reference it. However, the parameter's purpose is self-evident from the tool name and context, so the description adds minimal but sufficient meaning for this trivial case.

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?

The description uses the specific verb 'Return' and clearly identifies the resource: a presentation's metadata, ordered slide list, and compiled artifacts. This distinguishes it from sibling tools like get_slide (single slide) and list_presentations (list of presentations).

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?

The description provides clear context by detailing exactly what the tool returns, allowing an agent to infer when to use it (e.g., when a full presentation overview is needed). However, it does not explicitly mention alternatives or exclusions such as 'use get_slide for a single slide'.

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

get_slideA

Return the full content of a single slide by its zero-based index.

ParametersJSON Schema
NameRequiredDescriptionDefault
slide_indexYes
presentation_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It adds the 'zero-based' indexing detail and implies a read-only operation via 'Return', but it does not disclose error behavior, return format, or any other edge-case behavior. The description is minimal but sufficient for a simple read operation.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no wasted words. Every element earn its place: the verb, the object, and the crucial indexing detail.

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?

Given the tool's simplicity, the presence of an output schema, and the two parameters, the description covers the essential usage. It lacks only explicit guidance on when to use it versus get_presentation, and does not mention potential out-of-bounds behavior, but these are minor gaps for this straightforward read operation.

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 0%, so the description must compensate. It clarifies that slide_index is zero-based, adding meaningful semantics beyond the schema's type declaration. presentation_id is not described, but its purpose is obvious from the parameter name and sibling context.

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?

The description clearly states a specific verb ('Return'), resource ('full content of a single slide'), and the indexing convention ('zero-based index'). This distinguishes it from siblings like get_presentation (whole presentation) and set_slide (mutation).

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?

The description implies usage when needing a single slide's content, but does not explicitly compare to alternatives such as get_presentation, nor does it state when not to use it. No exclusions or alternative recommendations are provided.

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

import_presentation_sourceA

Replace a presentation's slides by parsing pandoc slide Markdown. Splits on '##' (slide) and bare '#' (section-divider) headings, ignoring '#' inside fenced code blocks.

presentation_id must already exist. Every slide it currently has is replaced; metadata is untouched. Exactly one of markdown (inline content) or source_path (absolute path to a .md file) must be given.

ParametersJSON Schema
NameRequiredDescriptionDefault
markdownNo
source_pathNo
presentation_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It explicitly states the destructive nature ('Every slide it currently has is replaced'), clarifies that metadata is untouched, and details the parsing rules (splits on headings, ignores code blocks). This is exactly the kind of context an agent needs before using a replacement operation.

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

Conciseness5/5

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

The description is concise and front-loaded with the primary action. It uses three focused sentences to cover the main behavior, parsing details, and constraints without any filler. Every sentence adds value, and the structure is easy to parse.

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?

Given the tool's complexity (destructive import with parsing rules), the description covers the essential behaviors: replacement of slides, untouched metadata, prerequisite existence, and the required input format. Since an output schema exists, explaining return values is unnecessary. The description is complete enough for an agent to correctly select and invoke this tool.

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?

The schema description coverage is 0%, so the description must compensate. It does so by explaining that 'exactly one of markdown (inline content) or source_path (absolute path to a .md file) must be given,' thereby clarifying the two optional parameters. It also notes that presentation_id must already exist. This adds meaningful interpretation beyond the raw schema, though it could offer more detail on the id parameter itself.

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?

The description opens with a specific verb and resource: 'Replace a presentation's slides by parsing pandoc slide Markdown.' This clearly distinguishes it from sibling tools like create_presentation or set_slide, and the inclusion of parsing mechanics further clarifies its unique purpose.

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?

The description provides clear context for when to use this tool: to replace all slides of an existing presentation with content derived from markdown. It states the prerequisite that presentation_id must already exist and the constraint that exactly one input source must be provided. However, it does not explicitly name alternative tools for different scenarios (e.g., set_slide for single-slide edits), so it stops short of full exclusion guidance.

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

list_presentationsA

List every presentation currently held in memory.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses that the tool lists every presentation currently held in memory, which indicates a read-only operation and limits scope to in-memory objects. While it doesn't mention edge cases or side effects, the operation is simple and the phrase 'currently held in memory' adds useful behavioral context beyond a generic 'list presentations'.

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

Conciseness5/5

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

The description is a single concise sentence that front-loads the purpose. Every word contributes value, with no unnecessary filler.

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?

The tool is simple (no parameters) and an output schema exists, so the description does not need to explain return values. The description fully covers the tool's purpose and scope, making it complete for an agent to select and invoke 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?

The input schema has zero parameters, so the baseline is 4. The description's phrase 'every presentation' confirms there is no filtering or parameters, aligning with the schema. There is no additional parameter meaning needed.

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?

The description clearly states the tool lists every presentation currently held in memory, using a specific verb ('List') and resource ('presentations'). This distinguishes it from sibling tools like get_presentation (which retrieves a single presentation) and create_presentation (which creates one). The scope is explicit and unambiguous.

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?

The description implies usage for enumerating all in-memory presentations, but it does not explicitly state when to use this tool versus alternatives like get_presentation. No exclusions or alternative tool mentions are provided, so the guidance is only implicit.

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

render_slides_as_pngsA

Convert a compiled artifact to a numbered PNG sequence for visual validation. format must match a previously compiled artifact.

ParametersJSON Schema
NameRequiredDescriptionDefault
dpiNo
formatYes
output_dirNo
presentation_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description must itself convey behavioral traits. It discloses the output type (PNG sequence) and a dependency (compiled artifact), which is useful. However, it does not explicitly state whether the operation is read-only or if any side effects occur, leaving some ambiguity that annotations would normally cover.

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

Conciseness5/5

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

The description is extremely concise—two short sentences—with the core purpose front-loaded. Every word earns its place, and there is no redundancy or filler.

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

Completeness3/5

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

The description covers the essential purpose and a key prerequisite, and an output schema exists to document return values. However, it could be more complete by explicitly mentioning that the presentation must be compiled first or by clarifying the optional parameters (dpi, output_dir). The current text is adequate but leaves room for an agent to misunderstand the workflow.

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

Parameters2/5

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. It only adds meaning for the 'format' parameter (must match a previously compiled artifact), but does not explain presentation_id, dpi, or output_dir. The schema's defaults and types provide some information, but the description adds little beyond the format constraint.

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?

The description clearly states the tool converts a compiled artifact into a numbered PNG sequence for visual validation. It uses a specific verb ('Convert') and resource ('compiled artifact'), and the mention of 'numbered PNG sequence' distinguishes it from sibling tools like compile_presentation or get_slide.

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?

The description gives a clear use case ('for visual validation') and a prerequisite ('format must match a previously compiled artifact'), implying this tool is used after compilation. It does not explicitly name alternatives or state when not to use it, but the context suffices for a well-informed agent.

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

set_slideA

Add, replace, or insert a slide.

insert=False (default): index < slide count -> replace in place; index >= slide count -> append. insert=True: inserts at index, shifting that slide and everything after it later (index >= slide count still appends). Combine with delete_slide to move a slide to a new position.

content is raw Pandoc Markdown -- also supports speaker notes by name alone. Exact syntax for three Beamer-specific conventions: Incremental bullets : > - item Section divider : content is ONLY "# Section Title", nothing else Two-column layout : :::: {.columns}\n::: {.column width="50%"}\nLeft\n:::\n::: {.column width="50%"}\nRight\n:::\n::::

expected_slide_count : optional. If a concurrent call already changed the deck since you last checked, this fails with a clear error instead of silently landing at an unintended position -- get_presentation to refresh, then retry. Recommended when issuing several set_slide calls for the same presentation without waiting for each result first.

ParametersJSON Schema
NameRequiredDescriptionDefault
indexYes
titleYes
insertNo
contentYes
presentation_idYes
expected_slide_countNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A5/5.0
Behavior5/5

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

With no annotations provided, the description fully discloses behavior: default append/replace logic, shift semantics for insert, and the concurrency failure behavior when expected_slide_count mismatches. It also details content format constraints for Pandoc Markdown and Beamer-specific syntax, which is critical for correct invocation.

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

Conciseness5/5

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

The description is dense but every sentence adds value—no filler. It is well-structured with clear sections for operational modes, content format, and concurrency guidance, making it easy to parse without sacrificing important details.

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?

For a tool of this complexity, the description covers all essential aspects: operation semantics, content format specifics, concurrency handling, and related tools. The presence of an output schema means return values don't need to be explained, and the description is otherwise complete for safe and correct use.

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

Parameters5/5

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

Schema coverage is 0%, so the description must explain all parameters. It thoroughly explains insert, content (with examples), expected_slide_count, and index behavior relative to slide count. Presentation_id and title are self-evident from their names, so the description sufficiently compensates for the lack of schema descriptions.

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?

The description opens with 'Add, replace, or insert a slide,' which clearly states the tool's function with a specific verb and resource. It further distinguishes itself from siblings like delete_slide and get_slide by detailing the different insertion/replacement modes, making the purpose unambiguous.

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

Usage Guidelines5/5

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

It explicitly explains when to use insert=True vs insert=False, including edge cases like index >= slide count. It also recommends combining with delete_slide to move slides and suggests using expected_slide_count for concurrent calls, providing clear when-to-use guidance and pointing to get_presentation as an alternative for refreshing state.

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

update_presentation_metadataA

Update title-slide metadata (title/subtitle/author/institute/date) on an existing presentation. Only fields given a value are changed.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo
titleNo
authorNo
subtitleNo
instituteNo
presentation_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations, the description carries the full transparency burden. It discloses the partial-update behavior ('Only fields given a value are changed'), which is valuable, but it leaves ambiguity about null handling (e.g., whether null clears a field) and does not mention permissions, errors, or reversibility.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the verb and resource, with no wasted words. Every piece of information (scope, fields, partial update) earns its place.

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

Completeness3/5

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

For a simple metadata-update tool, the description is adequate but has gaps: it doesn't clarify how to clear a field (since null is allowed), nor does it mention prerequisites or failure modes. The existence of an output schema may cover return values, but the description alone is not fully complete.

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 0%, so the description must compensate. It names the updatable fields and explains the update semantics, which is critical given the schema only lists types and defaults. Presentation_id is implied as the target identifier, though not explicitly described.

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?

The description clearly states the tool updates title-slide metadata on an existing presentation and enumerates the specific fields (title/subtitle/author/institute/date). This distinguishes it from siblings like create_presentation and set_slide, which handle creation and slide content respectively.

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?

The description provides clear context: it operates on an existing presentation and only changes fields given a value. It does not explicitly name alternative tools or state when not to use it, but the scope is clear enough to infer appropriate usage.

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

wikipedia_readA

Fetch the full plain-text body of a Wikipedia article.

title should be the exact article title from wikipedia_search. Content is truncated to max_chars characters (default 15 000).

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes
max_charsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Since there are no annotations, the description carries the burden of disclosing behavior. It explicitly states that content is truncated to max_chars characters, with a default of 15,000, which is a key behavioral trait beyond what the schema shows. It does not cover error cases, but for a simple fetch operation this is adequate.

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

Conciseness5/5

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

The description is three concise sentences, front-loaded with the main purpose. Every sentence adds value: the first states the core action, the second clarifies the title requirement, and the third explains the truncation behavior. No filler or redundancy.

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?

Given the tool's simplicity (2 parameters, no annotations), the description covers the essential aspects: what it does, how to supply parameters, and key output behavior. The output schema exists to explain return values, so that is not the description's job. It could mention error handling for invalid titles, but this is a minor gap.

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

Parameters5/5

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

The input schema has zero descriptions for its parameters, so the description must compensate. It does so effectively by explaining that 'title' should be the exact article title from wikipedia_search and that 'max_chars' controls truncation with a default. Both parameters receive meaningful semantic context beyond their raw schema definitions.

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?

The description begins with 'Fetch the full plain-text body of a Wikipedia article,' which clearly states the verb (fetch), resource (Wikipedia article body), and scope. This distinguishes it from sibling tools like wikipedia_search (which searches titles) and fetch_webpage (which is not Wikipedia-specific).

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?

The instruction that 'title should be the exact article title from wikipedia_search' provides clear workflow context: first search, then read. While it does not explicitly mention when not to use it or compare with alternatives, the guidance is sufficient for a typical usage scenario.

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.

  1. 17 tool updatesv0.1.0
    • First observedacademic_search
    • First observedcleanup_presentation
    • First observedcompile_presentation
    • First observedcreate_presentation
    • First observeddelete_slide
    • First observedexport_presentation_source
    • First observedfetch_webpage
    • First observedget_presentation
    • First observedget_slide
    • First observedimport_presentation_source
    • First observedlist_presentations
    • First observedrender_slides_as_pngs
    • First observedset_slide
    • First observedupdate_presentation_metadata
    • First observedweb_search
    • First observedwikipedia_read
    • First observedwikipedia_search

TDQS

A3.8/5.0

Scored across 17 tools

Disambiguation5/5

Every tool has a distinct target resource and action, from presentation lifecycle operations (create, get, set, delete, compile) to separate search sources (academic, web, Wikipedia, fetch URL). The only overlapping area is set_slide handling add/replace/insert, but its description clearly parameterizes the behavior.

Naming Consistency3/5

Presentation tools consistently use verb_noun names (list_presentations, create_presentation, delete_slide, compile_presentation), but search tools shift to noun_verb order (academic_search, web_search, wikipedia_read). All names are snake_case and verbs are clear, so the inconsistency is moderate rather than chaotic.

Tool Count3/5

17 tools sits in the borderline heavy range. The count is justified if the server intentionally combines presentation creation with research utilities, but the two distinct domains could feel bloated. Each subdomain alone would be well-scoped.

Completeness4/5

The presentation workflow covers the full lifecycle: create, read, update, delete, import/export, compile, and visual validation. The research tools handle web, academic, Wikipedia, and URL fetching. Minor gaps exist (e.g., no direct slide reordering, no academic PDF full-text fetch), but agents can achieve these with existing tools or workarounds.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    MCP server for Deckrun — generate presentation PDFs, narrated videos, and audio from Markdown. Built for AI agents and IDEs. Free tier: no API key required — generate PDFs instantly. Paid tier: set DECKRUN_API_KEY to unlock video, audio, and account tools.
    2
    2
    MIT
  • A
    license
    A
    quality
    Not graded
    maintenance
    An MCP server that enables AI agents to instantly convert Markdown into beautiful, ready-to-deliver Word, PDF, HTML with sidebars, and Slideshow documents, bridging the "last mile" of AI content generation.
    7
    28 npm
    1
    -
  • A
    license
    B
    quality
    B
    maintenance
    Official MCP server for ToseaAI that enables document-to-presentation workflows including PDF parsing, outline generation, and slide rendering. It provides a stable tool surface for AI agents to create, manage, and export presentations directly within their environment.
    21
    1
    MIT