Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
FERRY_HOMENoWhere decks are stored. Decks are stored in ~/.ferry/decks (set FERRY_HOME to change it).~/.ferry/decks
FERRY_PORTNoThe port for the viewer, which starts automatically at http://localhost:4747 (set FERRY_PORT to change it).4747
FERRY_CHAT_MODELNoSet FERRY_CHAT_MODEL to pick a model (e.g. sonnet for faster replies) for the viewer chat agent.
FERRY_CLAUDE_BINNoSet FERRY_CLAUDE_BIN if claude isn't on your PATH.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}
prompts
{
  "listChanged": true
}
resources
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
authoring_guideA

Slide types, JSON shapes, and storytelling rules for explaining code changes. Read once before building a deck.

inspect_changesA

List changed files (status, churn) and their numbered changes (contiguous blocks of added/removed/re-indented lines) with previews. Change numbers match diff slides with a git source: assign them to steps with steps[].changes.

create_deckA

Create an empty presentation deck. Returns its id and live viewer URL. Add content with add_slides.

add_slidesA

Append slides to a deck (or insert after a slide id). Returns the outline and any warnings (unmatched callouts, unknown ids). Changes appear live in an open viewer. See authoring_guide for slide types.

update_slideA

Replace one slide with a new definition (send the complete slide). Keeps its id and position.

remove_slidesC

Remove slides by id.

reorder_slidesC

Set the slide order. Ids you omit keep their relative order after the listed ones.

update_deckC

Change deck metadata or theme.

get_deckB

Return the deck outline and the authoring JSON of its slides (or one slide), e.g. to edit with update_slide.

list_decksA

List saved decks, newest first.

delete_deckA

Permanently delete a deck, its change plan and its viewer chat. Only do this when the user asks: it cannot be undone.

draft_deck_from_gitA

Create a skeleton deck from a git range: title with stats, a file map, and one stepped diff slide per significant file (one step per hunk). Then refine: add narration, callouts, behavior slides, and a review checklist with update_slide/add_slides.

open_deckB

Open the deck in the user's browser (live: later edits appear immediately). Returns the URL.

export_deckB

Write the deck as one self-contained HTML file (viewer, fonts, and code inlined) to share or attach to a PR.

wait_for_feedbackA

Wait until the user sends a change plan from the viewer's feedback panel (C key), then return it: code changes they want in the repository the deck explains, each with the slide, step and pinned element (often a code line) it was written on, plus the slide's authoring JSON. Returns at once if requests are already pending. The viewer shows the user that you are listening. Make the changes in the code (not the slides), resolve_feedback, then call this again to keep reviewing together.

get_feedbackA

Return the pending change plan left in the viewer (without waiting) and mark it as being worked on: code changes to make in the repository the deck explains. Use when the user says they left feedback.

resolve_feedbackB

Close change requests after making the code changes (or declining them). Each reply appears in the viewer next to the request.

reply_feedbackA

Post a message in the viewer chat without closing anything: ask a clarifying question about a request (by id), or say something about the whole deck (no id). The user answers in the viewer; wait_for_feedback returns their answer.

Prompts

Interactive templates invoked by user choice

NameDescription
explain_changesBuild a narrated Ferry presentation that explains a set of code changes.

Resources

Contextual data attached and managed by the client

NameDescription
guide

TDQS

A3.5/5.0

Scored across 18 tools

Disambiguation5/5

Each tool targets a distinct resource or action, from deck and slide CRUD to git inspection and viewer feedback. The only subtle overlap is between get_feedback and wait_for_feedback, but their descriptions clearly distinguish immediate retrieval from blocking wait, and resolve_feedback vs reply_feedback are similarly well separated.

Naming Consistency4/5

All operational tools follow a consistent snake_case verb_noun pattern (e.g., create_deck, add_slides, update_slide, wait_for_feedback). The lone deviation is authoring_guide, which is a noun phrase rather than an action, but the overall convention is predictable.

Tool Count4/5

18 tools is slightly above the ideal 3-15 range, but the server's domain is genuinely broad: deck lifecycle, slide editing, git diff import, viewer control, and feedback handling. Each tool earns its place, though a few could conceivably be consolidated.

Completeness5/5

The surface covers full CRUD for decks and slides, list/open/export operations, git change inspection and skeleton deck generation, plus a complete feedback loop (wait, get, resolve, reply). No obvious dead ends exist for the stated purpose of building and refining code-explanation decks.

Maintenance

ActivityMaintained
ResponsivenessNo issues