Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
PF_DEBATE_HOMENoDirectory where the card library and data are stored. Defaults to ~/.pf-debate/.
TABROOM_PASSWORDNoOptional password for Tabroom/OpenCaselist login.
TABROOM_USERNAMENoOptional username for Tabroom/OpenCaselist login.
PF_DEBATE_EXPORTSNoDirectory where exported speech docs are saved. Defaults to ~/Documents/pf-debate/.

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": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
search_cardsA

Search already-cut debate cards. Plain English works ("cards saying data centers raise power bills"), and so does debate shorthand ("econ decline war", "heg", "prolif").

mode: "hybrid" (default: meaning + keywords) or "keyword" (exact words only).
scope: "library" = OpenCaselist corpus (PF, LD, Policy, camp OpenEv files; 2014-2022);
       "mine" = cards the user cut or imported (local installs).
sort: "relevance" or "popular" (most-read by teams first; a strong quality signal for impact cards).
side: "A"/"N" (aff/neg). event: pf | ld | cx | openev. Try a couple of phrasings for important searches.
get_cardA

Card by id (lib:N or cN). view="read" (default, compact): tag, cite, and only the underlined/highlighted text (==highlighted== is read aloud, underlined is context, ... marks skipped text). view="full": the whole body, needed to judge context, find indicts in unhighlighted text, or recut.

fetch_sourceA

Fetch an article/PDF (or re-open a fetched source by its id) as clean numbered paragraphs + citation metadata. Long sources are paged: call again with start_paragraph to continue. Copy quotes for cut_card exactly from this text.

suggest_cutA

Suggest a card for claim from a fetched source (sN / s_… from fetch_source): the best-matching passage and highlight phrases, all exact source text. Review and adjust, then pass the returned start_quote, end_quote, paragraph, highlight and underline to cut_card with a tag and cite.

auto_cutA

Find evidence for a claim in one step: the best already-cut library cards PLUS new cards auto-cut from fresh papers/news (fetched, passage picked, highlighted, verified verbatim). Tags default to the claim: rewrite them to what each highlight proves, and check quals before using a card.

find_sourcesA

Find NEW evidence to cut: recent scholarly papers (with author affiliations for quals and free PDF links) and current news articles. kinds: ["papers", "news"] (default both). Free and keyless; if a service is busy it is listed under "skipped". Then fetch_source a result's url and cut it.

cut_cardA

Cut an evidence card. The body is the exact source text from start_quote through end_quote (a few sentences to a few paragraphs; enough context that the author's meaning is clear). highlight = phrases read aloud; underline = wider phrases that give context (defaults to highlight). Every quote must be copied verbatim from the source (only whitespace, quote marks and dashes are normalized); anything else is rejected with a hint showing where the text stopped matching. source_id: sN from fetch_source, or a card id (cN, lib:N) to re-cut an existing card. paragraph: the [N] number from fetch_source where the card starts; required when start_quote appears more than once in the source.

export_docA

Write a speech doc / case / block file. items in order, each one of: {"pocket": "..."} {"hat": "..."} {"block": "..."} (Verbatim headings: Pocket > Hat > Block), {"tag": "..."} (analytic tag, no card), {"text": "..."} (speech prose), {"card": "c12" | "lib:345"} (optionally {"card": id, "tag": "new tag"} to retag a card in the export). format "docx": Verbatim-compatible Word file. format "gdocs": an .html file for Google Docs users (open it, select all, copy, paste into a Google Doc; or upload it to Google Drive and open with Google Docs). version "full" (default): complete cards, the doc you send in the email chain / keep as the file. version "read": read-ready copy to speak from (Rhetorify): each card cut to tag, short cite and only its highlighted words, each hat/block heading marked with its time at wpm, total time on top. Returns the file path.

read_speechA

Time a speech exactly and return its read-ready script (what is actually said aloud). Use it to check a case fits before exporting, and to see what to trim. Counting is exact, never estimate word counts yourself. items: the same list as export_doc (headings, {"tag"}, {"text"}, {"card": id}). A card counts its tag, short cite and highlighted words only. For a case pasted as plain text, pass the words the debater actually reads as {"text": ...} items (highlighting in pasted text can't be seen). speech: constructive (4:00), rebuttal (4:00), summary (3:00), final focus (2:00). wpm: the debater's pace. Lay about 160, fast about 200, circuit about 230+. Ask their pace if it matters.

caselist_searchA

Search OpenCaselist (disclosed cases) for a team, debater last name, or argument text. Defaults to the current HS PF caselist; pass a slug like 'hspf25' for older ones. Limit: 4/min.

caselist_teamC

A team's caselist page: rounds (tournament, side, opponent, round report, open-source file path) and cites (their disclosed cards). Use for scouting and building blocks against their case.

caselist_entriesA

Scout a whole tournament field: match every entry to its caselist page in one call. entries: the CSV Tabroom exports from a tournament's Entries/Field page (Institution,Location,Entry,Code,...), or one line per team like "Plano West, Park & Jiang". Returns per team: disclosed or not, round count, recent open-source doc paths (for caselist_download) and cite titles. Then follow pf-scout "Prep out a tournament".

caselist_downloadA

Download an open-source .docx from OpenCaselist (the 'opensource' path from caselist_team or a search 'download_path') and import its cards as cN ids you can read, analyze, re-cut or export.

library_statusB

Whether the local card library is built, how many cards per event, years covered, and build progress.

build_libraryA

Install the card library in the background (one time; resumable; progress via library_status). mode "download" (default): the prebuilt library (~170k cards incl. the most-read PF, LD, Policy and camp cards; a few minutes). "quick" / "full": build from the raw dataset instead (PF only in minutes, or everything in a few hours).

pf_guideA

PF debate knowledge. Read "pf-debate" first. Task guides: pf-case, pf-cut-card, pf-analyze, pf-blocks, pf-blockfile (team block files), pf-scout, pf-practice. References: glossary, format, tactics, impacts, evidence-ethics.

Prompts

Interactive templates invoked by user choice

NameDescription
pf-analyzeUse when a debater asks to analyze, rate, check, or indict a card, a case, or an opponent's evidence, or wants crossfire questions or answers against specific evidence.
pf-blockfileUse when a debater or team wants a block file, blockfile, master file, A2/AT file, frontline file, or "blocks for the whole topic" - a side-organized Word file of answers to every opposing argument, with numbered, labeled, carded responses.
pf-blocksUse when a debater needs blocks, frontlines, "AT"/answers-to responses, turns, or a written rebuttal, summary, or final focus, or asks what to do after an argument was dropped or turned.
pf-caseUse when a debater asks to build, write, or improve a PF case, contention, constructive, advantage, or disadvantage, including cases centered on a specific impact (nuclear war, extinction, econ, climate, structural violence) or for a given side of a resolution.
pf-cut-cardUse when a debater asks to cut a card, find evidence or a source for a claim, recut or retag a card, or get cards for an argument (PF, LD, or policy debate).
pf-debateUse when helping with high school debate, especially NSDA Public Forum (PF) - cases, contentions, cards, evidence, blocks, frontlines, rebuttals, summaries, final focus, crossfire, weighing, impacts, caselist, or any debate jargon (link turn, NUQ, collapse, extend, powertag, speech doc).
pf-practiceUse when a debater wants to drill or practice - a crossfire drill, a mock practice round against their case, judge feedback or an RFD with speaker points, or checking whether a speech fits its time (word/speed check).
pf-scoutUse when a debater starts prep on a new PF topic, asks for a topic analysis or prep plan, wants to know common arguments on a resolution, or wants to scout an opponent, look up a team's caselist or disclosed case, or prepare for a specific round.

Resources

Contextual data attached and managed by the client

NameDescription
pf-analyze/SKILL.md
pf-blockfile/SKILL.md
pf-blocks/SKILL.md
pf-case/SKILL.md
pf-cut-card/SKILL.md
pf-debate/SKILL.md
pf-debate/references/evidence-ethics.md
pf-debate/references/format.md
pf-debate/references/glossary.md
pf-debate/references/impacts.md
pf-debate/references/tactics.md
pf-practice/SKILL.md
pf-scout/SKILL.md

TDQS

A3.8/5.0

Scored across 16 tools

Disambiguation5/5

Each tool targets a distinct resource or action: guide, library install/status, card search/retrieval, source fetching/cutting, caselist scouting/download/search, document export, and speech timing. Even the similar cut tools (suggest_cut vs. auto_cut) are clearly differentiated by whether they operate on a provided source or perform an end-to-end evidence search.

Naming Consistency4/5

Most tools use a verb_noun pattern (build_library, export_doc, search_cards, get_card, cut_card, fetch_source, suggest_cut, find_sources, read_speech), but a few deviate with noun-first caselist_* names (caselist_team, caselist_entries, caselist_download, caselist_search), noun_noun names (pf_guide, library_status), and the compound auto_cut. This is readable and groups related tools, but the mixed conventions are a minor inconsistency.

Tool Count4/5

At 16 tools, the set is slightly above the 3-15 'well-scoped' range but not excessive for a debate prep server covering research, card cutting, caselist scouting, document export, and speech timing. Each tool serves a distinct workflow step and none feel redundant, so the count is justifiable.

Completeness4/5

The tool set spans the full debate prep pipeline: finding/fetching sources, cutting and searching cards, scouting/downloading opponent cases, building exports, and timing speeches. Minor gaps include no card update/delete operations and no direct import from arbitrary pasted text, but these can be worked around through re-cutting or using read_speech.

Maintenance

ActivityMaintained
ResponsivenessNo issues