Skip to main content
Glama
Arkava-AI
by Arkava-AI

Gamma MCP Server

License: MIT Node.js Version TypeScript npm version npm downloads CI MCP SDK

A Model Context Protocol (MCP) server that integrates Gamma.app with AI assistants. Create presentations, documents, webpages, and social posts directly from your AI conversations.

Works with: Claude Code, Claude Desktop, OpenCode, GitHub Copilot CLI, Google Gemini CLI, and any other MCP-compatible AI assistant.

Features

  • Generate Content: Create professional presentations, documents, webpages, and social posts from text prompts

  • Theme Support: Browse and apply visual themes to your content

  • Folder Organization: Save generated content to specific folders

  • Template Remix: Create variations of existing Gamma templates

  • Email Sharing: Share generated content directly via email

Related MCP server: Gamma MCP Server

Quick Start

1. Clone and Install

git clone https://github.com/Arkava-AI/gamma-mcp-server.git
cd gamma-mcp-server
npm install
npm run build

2. Get Your Gamma API Key

  1. Log in to gamma.app

  2. Go to Settings > API (or Settings > Members > API tab)

  3. Click Create API key

  4. Copy the key (format: sk-gamma-xxxxxxxx)

Note: Requires Gamma Pro, Ultra, Team, or Business account.

3. Configure Your AI Assistant

Choose your AI assistant below for setup instructions.


Claude Desktop (macOS / Windows / Linux)

Config File

OS

Path

macOS

~/Library/Application Support/Claude/claude_desktop_config.json

Linux

~/.config/Claude/claude_desktop_config.json

Windows

%APPDATA%\Claude\claude_desktop_config.json

Add to the mcpServers object:

{
  "mcpServers": {
    "gamma": {
      "command": "node",
      "args": ["/absolute/path/to/gamma-mcp-server/dist/index.js"],
      "env": {
        "GAMMA_API_KEY": "sk-gamma-your-api-key-here"
      }
    }
  }
}

Restart Claude Desktop

Restart Claude Desktop to load the new MCP server. You should see "gamma" in your MCP servers list.


Claude Code

Claude Code uses the same MCP configuration as Claude Desktop. If you've already configured Claude Desktop, you're all set.

For project-level configuration, create a .claude/settings.json file in your project directory with the same mcpServers structure shown above. This allows different projects to use different MCP server configurations.


OpenCode

Config File

Scope

Path

Global (user)

~/.config/opencode/opencode.json

Project

./opencode.json (in your project root)

JSON Structure

{
  "mcp": {
    "gamma": {
      "type": "local",
      "command": ["node", "/absolute/path/to/gamma-mcp-server/dist/index.js"],
      "enabled": true,
      "environment": {
        "GAMMA_API_KEY": "sk-gamma-your-api-key-here"
      }
    }
  }
}

Note: OpenCode uses a different config format from Claude Desktop — mcp (not mcpServers), type field required ("local" or "remote"), command is an array, and env vars go under environment.

Restart OpenCode after editing the config to load the server.


GitHub Copilot CLI

Config File

  • ~/.copilot/mcp-config.json

JSON Structure

{
  "mcpServers": {
    "gamma": {
      "type": "local",
      "command": "node",
      "args": ["/absolute/path/to/gamma-mcp-server/dist/index.js"],
      "env": {
        "GAMMA_API_KEY": "sk-gamma-your-api-key-here"
      },
      "tools": ["*"]
    }
  }
}

Note: Requires the GitHub Copilot CLI (gh copilot) — not the same as OpenAI Codex.


OpenAI Codex

Config File

  • ~/.codex/config.toml (TOML format, not JSON)

TOML Structure

[mcp_servers.gamma]
command = "node"
args = ["/absolute/path/to/gamma-mcp-server/dist/index.js"]
enabled = true

[mcp_servers.gamma.env]
GAMMA_API_KEY = "sk-gamma-your-api-key-here"

Note: Codex uses TOML format, not JSON. The env section is a separate table under [mcp_servers.gamma.env].


Google Gemini CLI

Config File

Scope

Path

User

~/.gemini/settings.json

Project

.gemini/settings.json (in your project root)

JSON Structure

{
  "mcpServers": {
    "gamma": {
      "command": "node",
      "args": ["/absolute/path/to/gamma-mcp-server/dist/index.js"],
      "cwd": "/absolute/path/to/gamma-mcp-server",
      "env": {
        "GAMMA_API_KEY": "sk-gamma-your-api-key-here"
      },
      "timeout": 30000
    }
  }
}

Restart Gemini CLI after editing the config to load the server.


Available Tools

Tool

Description

gamma_generate

Create presentations, documents, webpages, or social posts

gamma_get_status

Check generation progress (with optional polling)

gamma_from_template

Remix existing Gamma templates

gamma_list_themes

Browse available visual themes

gamma_list_folders

List your Gamma folders

gamma_share_email

Share content via email

gamma_health

Verify server and API are reachable

gamma_archive

Archive a Gamma from your workspace

gamma_generate

Create new content using Gamma's AI.

Formats & Sizes:

  • presentation: fluid, 16x9, 4x3

  • document: fluid, pageless, letter, a4

  • social: 1x1, 4x5, 9x16

  • webpage: fluid

Example prompts in your AI assistant:

  • "Create a 5-slide presentation about sustainable energy"

  • "Generate a document explaining our Q1 results"

  • "Make a social media post announcing our new product"

gamma_get_status

Check if a generation has completed. Set waitForCompletion: true to automatically poll until done.

gamma_from_template

Remix an existing Gamma with new content or variable substitutions.

{
  "templateId": "gamma_xyz789",
  "prompt": "Update for Q1 2025",
  "variables": { "company_name": "Acme Corp" }
}

Multi-Machine Setup

This repository is designed for easy deployment across multiple machines:

# On each machine:
git clone https://github.com/Arkava-AI/gamma-mcp-server.git
cd gamma-mcp-server
npm install && npm run build

# Then configure your AI assistant with the local path

To update on any machine:

git pull
npm install
npm run build
# Restart your AI assistant

Environment Variables

Variable

Default

Description

GAMMA_API_KEY

(required)

Your Gamma API key (sk-gamma-...)

GAMMA_API_BASE_URL

https://public-api.gamma.app/v1.0

Override for self-hosted Gamma instances

GAMMA_POLL_INTERVAL_MS

2000

Milliseconds between status polls (default 2s)

GAMMA_MAX_POLL_ATTEMPTS

150

Max polling attempts before timeout (default 150 × 2s = 5 min)


Development

# Run in development mode with auto-reload
npm run dev

# Build for production
npm run build

# Run linting
npm run lint

# Format code
npm run format

# Type check
npm run typecheck

# Test with MCP Inspector
npm run inspect

Project Structure

gamma-mcp-server/
├── src/
│   ├── index.ts          # Main entry point
│   ├── constants.ts      # Configuration constants
│   ├── types.ts          # TypeScript interfaces
│   ├── schemas/          # Zod validation schemas
│   ├── services/         # API client and formatters
│   └── tools/            # MCP tool implementations
├── dist/                 # Compiled JavaScript (generated)
├── package.json
├── tsconfig.json
└── eslint.config.js

API Credits

Gamma uses a credit-based system for API usage. Credits are consumed per generation. Monitor your usage in the Gamma dashboard and enable auto-recharge if needed.


Troubleshooting

Error

Solution

"GAMMA_API_KEY environment variable is required"

Ensure env.GAMMA_API_KEY is set in your AI assistant's MCP config

"Invalid API key"

Keys should start with sk-gamma-. Verify the complete key.

"Rate limit exceeded"

Wait a few minutes. Contact Gamma support for higher limits.

"Insufficient credits"

Top up credits or enable auto-recharge in Gamma settings.


Requirements

  • Node.js 18+

  • Gamma Pro/Ultra/Team/Business account (for API access)

  • MCP-compatible AI assistant (Claude Code, Claude Desktop, OpenCode, GitHub Copilot CLI, Gemini CLI, etc.)


Maintainer

Arkava Ltdengage@arkava.ai


License

MIT License - see LICENSE for details.


Available Tools

8 tools
gamma_archiveArchive GammaA
DestructiveIdempotent

Archive a Gamma (presentation, document, webpage, or social post) from your workspace.

Archived content is removed from your active workspace but retained for recovery. Use this to declutter your Gamma dashboard.

ParametersJSON Schema
NameRequiredDescriptionDefault
gammaIdYesThe ID of the Gamma to archive
response_formatNoOutput format: 'markdown' for human-readable or 'json' for structured datamarkdown

TDQS

A4.2/5.0
Behavior4/5

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

Description aligns with annotations: destructiveHint=true (removes from workspace), idempotentHint=true (archiving again likely harmless). Adds context about recoverability, enhancing 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?

Two concise sentences cover purpose, effect, and use case. No wasted words; front-loaded with action.

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?

Adequate for a simple archive operation with clear annotations. No missing context about behavior, parameters, or output.

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 covers 100% of parameters with descriptions. Description does not add information beyond schema, so baseline score applies.

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?

Description clearly states the verb 'Archive' and the resource 'Gamma' with specific types (presentation, document, etc.). Distinct from sibling tools like gamma_generate or gamma_get_status.

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?

Describes the effect ('removed from active workspace but retained for recovery') and use case ('declutter your dashboard'). Does not explicitly state when not to use, but context is clear.

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

gamma_from_templateCreate from TemplateA

Create new content by remixing an existing Gamma template.

This tool uses Gamma's Remix feature to create a new version of existing content with customizations. Useful for creating variations of proven templates.

PARAMETERS:

  • templateId (required): ID of the existing Gamma to use as template

  • prompt: Additional instructions for customization

  • variables: Key-value pairs for dynamic content substitution

  • folderId: Folder to save the result

  • waitForCompletion: If true, waits for completion

RETURNS: Same as gamma_generate

EXAMPLE: { templateId: "gamma_xyz789", prompt: "Update for Q1 2025 results", variables: { "company_name": "Acme Corp", "quarter": "Q1 2025" } }

ParametersJSON Schema
NameRequiredDescriptionDefault
promptNoAdditional instructions for customizing the template content.
folderIdNoFolder ID to save the remixed version to.
variablesNoKey-value pairs to substitute in the template. Use for dynamic content like names, dates, or custom values.
templateIdYesThe ID of an existing Gamma to use as template. Find this in the Gamma URL or use gamma_list_folders to browse.
response_formatNoOutput format: 'markdown' for human-readable or 'json' for structured datamarkdown
waitForCompletionNoIf true, poll until generation completes and return the final URL.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations indicate readOnlyHint=false (modification) and destructiveHint=false. The description adds behavioral context by explaining the 'Remix feature' and mentioning the waitForCompletion parameter, which reveals polling behavior. No contradictions 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.

Conciseness4/5

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

The description is well-structured with a summary, parameter list, returns note, and example. It is concise but could be slightly more compact. The front-loading of the purpose is effective.

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 the tool has 6 parameters (1 required), nested objects, and no output schema, the description is adequate but lacks details about the return value when waitForCompletion is false. The returns note 'Same as gamma_generate' is vague without knowing gamma_generate's output.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents parameters. The description lists parameters with names and an example, but adds little extra meaning beyond the schema. The example provides context for usage, but doesn't deeply enhance semantic understanding.

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's purpose: 'Create new content by remixing an existing Gamma template.' It uses a specific verb ('Create') and resource ('content by remixing template'), and distinguishes from sibling tool gamma_generate by specifying 'remix' versus likely create-from-scratch.

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 provides some context ('Useful for creating variations of proven templates') but lacks explicit guidance on when to use this tool versus gamma_generate or other siblings. No when-not-to-use or alternative tools are mentioned.

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

gamma_generateGenerate Gamma ContentA

Create a new presentation, document, webpage, or social post using Gamma's AI.

This tool generates professional content from any text input - a one-line prompt, messy notes, or polished content. Gamma's AI will structure, design, and style your content automatically.

SUPPORTED FORMATS:

  • presentation: Slide decks (sizes: fluid, 16x9, 4x3)

  • document: Reports, articles, essays (sizes: fluid, pageless, letter, a4)

  • webpage: Websites with header/footer support (size: fluid)

  • social: Social media posts (sizes: 1x1, 4x5, 9x16)

PARAMETERS:

  • prompt (required): Your content or instructions. Can be brief ("Company overview presentation") or detailed with bullet points.

  • format (required): One of presentation, document, webpage, social

  • cards: Number of slides/sections (1-60, default: AI-determined)

  • size: Aspect ratio appropriate for the format

  • themeId: Visual theme ID (use gamma_list_themes to see options)

  • language: Target language code (en, es, fr, de, zh, ja, etc.)

  • imageStyle: auto, photographic, generated, clipart, none

  • cardDensity: auto, high, low

  • waitForCompletion: If true, waits up to 5 min for generation to complete

RETURNS:

  • generationId: ID for tracking/status checks

  • status: pending, completed, or failed

  • url: Link to view content (when completed)

  • title: Generated or custom title

EXAMPLES:

  1. Quick presentation: { prompt: "5 slide pitch deck for AI startup", format: "presentation" }

  2. Detailed document: { prompt: "Technical documentation for REST API...", format: "document", cards: 10 }

  3. Styled content: { prompt: "Company culture overview", format: "presentation", themeId: "theme_123", waitForCompletion: true }

CREDITS: Each generation consumes Gamma API credits based on complexity.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations indicate a non-read-only, non-destructive action. The description adds valuable behavioral context: generation consumes credits, waitForCompletion behavior, default AI-determined card count, and return status. 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.

Conciseness4/5

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

The description is well-structured with sections for formats, parameters, returns, and examples. It is front-loaded with the primary action. While comprehensive, it remains clear and easy to scan, though it could be slightly tighter.

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 no output schema, the description covers return fields (generationId, status, url, title). It addresses formats, sizes, parameters, and credits. It misses error handling or authentication details but is sufficient for proper invocation.

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 is empty (0 parameters, 100% coverage), so the description carries the full burden. It thoroughly explains all parameters, including required ones, options, defaults, and examples, which is far beyond the schema.

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 creates new presentations, documents, webpages, or social posts. It specifies the verb 'create' and lists supported resources, distinguishing it from sibling tools like gamma_from_template and gamma_list_themes.

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 on when to use the tool (creating new content from text) and references gamma_list_themes for theme selection. It lacks explicit exclusions or alternatives for some siblings, but examples and parameter descriptions give adequate guidance.

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

gamma_get_statusGet Generation StatusA
Read-onlyIdempotent

Check the status of a Gamma generation.

Use this tool to check if a previously started generation has completed. Generations typically take 30 seconds to 2 minutes depending on complexity.

PARAMETERS:

  • generationId (required): The ID returned from gamma_generate

  • waitForCompletion: If true, polls until complete (max 5 minutes)

RETURNS:

  • status: pending, completed, or failed

  • url: Link to view content (when completed)

  • title: Content title

  • creditsUsed: Credits consumed

EXAMPLE: { generationId: "gen_abc123", waitForCompletion: true }

ParametersJSON Schema
NameRequiredDescriptionDefault
generationIdYesThe generation ID returned from gamma_generate
response_formatNoOutput format: 'markdown' for human-readable or 'json' for structured datamarkdown
waitForCompletionNoIf true, poll until generation completes (up to 5 minutes). If false, return current status immediately.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already provide read-only, idempotent, non-destructive hints. Description adds polling behavior and return values, enhancing transparency beyond annotations.

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?

Well-structured with purpose, usage, parameters, returns, example. Every sentence contributes, no fluff.

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?

Comprehensive for a status-checking tool: covers all parameters, behavior, return values, and example. No gaps given absence of output schema.

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 100% so baseline is 3. Description adds context on polling mechanism and example usage, adding value over schema alone.

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?

Description clearly states 'Check the status of a Gamma generation' with specific verb and resource, distinguishes from siblings like gamma_generate by focusing on status polling.

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?

Explicitly says 'Use this tool to check if a previously started generation has completed', providing clear context. Could mention when not to use, but example and sibling differentiation suffice.

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

gamma_healthHealth CheckA
Read-onlyIdempotent

Check if the Gamma MCP server and API are reachable and working.

Use this to verify your configuration is correct before running other tools. Returns whether the API key is valid, the API is reachable, and the account status.

Useful for:

  • Confirming the server is running after startup

  • Troubleshooting connection issues

  • Verifying your GAMMA_API_KEY is valid

ParametersJSON Schema
NameRequiredDescriptionDefault
response_formatNoOutput format: 'markdown' for human-readable or 'json' for structured datamarkdown

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true. The description adds details about what the tool checks (API key, reachability, account status) and its output, which is fully transparent and consistent 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.

Conciseness5/5

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

The description is highly concise: one sentence stating purpose, one sentence giving usage advice, and a bullet list of use cases. Every sentence adds value with no redundancy.

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 simplicity (one optional parameter, no output schema), the description fully covers what the tool does, when to use it, and what it returns. Annotations provide safety context, and the description compensates for lack of output schema by stating return fields.

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 coverage is 100%: the only parameter 'response_format' is fully documented with enum values, default, and description. The tool description adds no additional information about the parameter, so baseline 3 is appropriate.

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 explicitly states the tool checks if the Gamma MCP server and API are reachable and working, and specifies it returns API key validity, reachability, and account status. This clearly distinguishes it from sibling tools like gamma_generate or gamma_list_themes.

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?

The description provides explicit guidance: 'Use this to verify your configuration is correct before running other tools.' It also lists specific use cases like confirming server startup, troubleshooting connections, and verifying API key validity.

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

gamma_list_foldersList Gamma FoldersA
Read-onlyIdempotent

List your Gamma folders for organizing content.

Folders help organize generated content. Use the returned folder IDs with gamma_generate's folderId parameter to save content to specific folders.

PARAMETERS:

  • limit: Max folders to return (1-100, default 20)

  • offset: Skip this many folders for pagination

RETURNS:

  • items: Array of folders with id, name, itemCount

  • total: Total number of folders

  • hasMore: Whether more folders are available

  • nextOffset: Offset for next page

EXAMPLE: { limit: 20, response_format: "json" }

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum items to return (1-100, default 20)
offsetNoNumber of items to skip for pagination
response_formatNoOutput format: 'markdown' for human-readable or 'json' for structured datamarkdown

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already cover readOnly, idempotent, etc. The description adds value by detailing the return structure (items, total, hasMore, nextOffset) and the example, which clarifies behavior. No contradictions.

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

Conciseness4/5

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

Well-structured with clear sections (what, why, PARAMETERS, RETURNS, EXAMPLE). Front-loaded and no unnecessary words. Could be slightly more concise by integrating the example.

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 list tool with good annotations and schema coverage, the description adequately covers purpose, integration hint, and return format. Complete for its complexity level.

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 covers all three parameters (100% coverage), so baseline is 3. The description's PARAMETERS section omits response_format but mentions it in the example, adding minor value. Redundant for limit and offset.

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

Purpose4/5

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

The description clearly states the tool lists Gamma folders and mentions their use for organizing content. It differentiates from siblings like gamma_list_themes by focusing on folders. Not a perfect 5 because it doesn't explicitly contrast with other list tools.

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 explains that folder IDs can be used with gamma_generate, providing context for use. However, it lacks explicit guidance on when not to use this tool or alternatives beyond that hint.

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

gamma_list_themesList Gamma ThemesA
Read-onlyIdempotent

List available visual themes for Gamma content.

Themes control the visual styling of generated content including colors, fonts, and layouts. Use the returned theme IDs with gamma_generate's themeId parameter.

PARAMETERS:

  • limit: Max themes to return (1-100, default 20)

  • offset: Skip this many themes for pagination

RETURNS:

  • items: Array of themes with id, name, description

  • total: Total number of themes available

  • hasMore: Whether more themes are available

  • nextOffset: Offset for next page

EXAMPLE: { limit: 10, response_format: "markdown" }

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum items to return (1-100, default 20)
offsetNoNumber of items to skip for pagination
response_formatNoOutput format: 'markdown' for human-readable or 'json' for structured datamarkdown

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds value by detailing the return structure (items with id, name, description, total, hasMore, nextOffset) and the optional response_format parameter, providing full transparency beyond annotations.

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

Conciseness4/5

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

The description is well-structured with sections for explanation, parameters, returns, and example. It is front-loaded with the main purpose and avoids unnecessary repetition. However, it could be slightly more concise (e.g., combining parameter descriptions).

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 no output schema, the description thoroughly explains the return values (items, total, hasMore, nextOffset) and ties the tool into the broader workflow with gamma_generate. All parameters are documented, and the example aids understanding. No gaps.

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 100% (all parameters have descriptions), so baseline is 3. The description adds an example that shows how parameters work together (e.g., { limit: 10, response_format: 'markdown' }), which provides concrete usage context that the schema alone does not.

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 available visual themes for Gamma content, and explains how themes control visual styling. It distinguishes itself from siblings by specifically mentioning it returns theme IDs used with gamma_generate.

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 explicit guidance to use returned theme IDs with gamma_generate's themeId parameter, implying this tool should be used before generating content. It lacks explicit when-not-to-use or alternative tool comparisons, but the context is clear.

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

gamma_share_emailShare Gamma via EmailA

Share a generated Gamma with recipients via email.

Send an email invitation to view your Gamma content. Recipients will receive a link to access the content.

PARAMETERS:

  • generationId (required): The ID of the Gamma to share

  • emails (required): Array of email addresses (max 10)

  • message: Optional personal message to include

RETURNS:

  • success: Whether the share was successful

  • emails: List of recipients

EXAMPLE: { generationId: "gen_abc123", emails: ["colleague@company.com", "client@example.com"], message: "Here's the presentation we discussed" }

NOTE: Ensure the generation is complete before sharing. Use waitForCompletion: true to automatically wait up to 5 minutes.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailsYesList of email addresses to share with (max 10)
messageNoOptional personal message to include in the share email
generationIdYesThe generation ID of the Gamma to share
response_formatNoOutput format: 'markdown' for human-readable or 'json' for structured datamarkdown
waitForCompletionNoWait for generation to complete before sharing (max 5 minutes)

TDQS

A3.9/5.0
Behavior4/5

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

Beyond the minimal annotations (readOnlyHint=false, destructiveHint=false), the description adds valuable behavioral details: sends email invitations, recipients receive a link, and waitForCompletion behavior (max 5 minutes). It does not cover all edge cases like invalid emails or rate limits, but adds meaningful context.

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

Conciseness3/5

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

The description is front-loaded with the purpose and includes an example and note, but it is not fully concise: it is missing two parameters (response_format, waitForCompletion) from the parameter list, making it incomplete. It could be tighter while covering all parameters.

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 5 parameters, no output schema, and moderate annotations, the description is mostly complete but lacks mention of the response_format parameter (which controls output format). It also does not explain failure scenarios or retries. The return section is present but incomplete relative to schema options.

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 coverage is 100% with adequate descriptions for all parameters. The description lists three parameters (generationId, emails, message) and includes an example, but omits response_format and waitForCompletion from the bullet list, though waitForCompletion is mentioned in the note. Overall, the description adds marginal value beyond the schema.

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 'Share a generated Gamma with recipients via email.' It uses a specific verb ('share') and resource ('Gamma'), and distinguishes itself from sibling tools like gamma_generate and gamma_archive which have different purposes.

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 instructs to ensure the generation is complete before sharing and mentions using waitForCompletion: true to handle this automatically. While it doesn't explicitly list when not to use or name alternatives, it provides clear context for appropriate usage.

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. Dates show when Glama detected each change.

  1. 8 tool updatesv1.0.0
    • First observedgamma_archive
    • First observedgamma_from_template
    • First observedgamma_generate
    • First observedgamma_get_status
    • First observedgamma_health
    • First observedgamma_list_folders
    • First observedgamma_list_themes
    • First observedgamma_share_email

TDQS

A4.2/5.0
Disambiguation5/5

Each tool serves a distinct purpose: creating from prompt or template, checking status, listing themes/folders, sharing, health check, and archiving. No overlap detected.

Naming Consistency5/5

All tools follow the consistent pattern 'gamma_verb_noun' using snake_case, e.g., gamma_generate, gamma_list_themes, gamma_share_email.

Tool Count5/5

With 8 tools, the surface is well-scoped for a Gamma content generation server, covering creation, status, discovery, sharing, and archiving without bloat.

Completeness4/5

Core lifecycle is covered (create, check, archive, share), but missing a tool to list existing generations or browse created content, which is a minor gap.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Arkava-AI/gamma-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server