Skip to main content
Glama

pf-debate-mcp

A Public Forum debate partner for the AI you already use. Ask it things like:

  • "Make me a neg case on the Sep/Oct topic centered around a nuclear impact."

  • "Cut me a card that data centers raise residential electricity bills."

  • "Analyze this card and give me CX questions." / "Write blocks to their econ contention."

  • "They dropped our link turn. Write my summary."

  • "Scout Lexington AB on the caselist."

It knows PF jargon, speech times, tactics, weighing and the standard impact chains. It never makes up evidence.

Free web app (any age, no account)

https://debate.peshcompsci.org/app runs entirely in your browser:

  • plain-English search of about 266k cut cards

  • finding new papers and news

  • auto-suggested cuts with click-to-adjust highlighting and the verbatim check

  • a doc builder that exports to Word or Google Docs

  • an AI chat, powered by a free shared pool, your own free Puter account, or a one-click hand-off to your ChatGPT/Gemini

Related MCP server: guru-pk-mcp

Pick your app (no terminal needed)

App

What you get

Setup

Claude Desktop (Mac/Windows)

Everything: the card library, verbatim card cutting, caselist scouting, Word speech docs

One-click install

Claude.ai (web/mobile)

PF knowledge + card cutting with Claude's web search

Upload a skill

ChatGPT

PF knowledge + card cutting with ChatGPT's web search

Make a GPT or Project

Gemini

PF knowledge + card cutting with Gemini's web search

Make a Gem

Claude Code, Cursor, other MCP apps

Everything

Developer install

What "full tools" adds. The Claude Desktop and developer installs give your AI a local library of already-cut cards and a card cutter. The cutter checks every word against the real article and rejects anything that isn't verbatim, so fabricated evidence can't slip in. Web chat apps can't run local tools. There, the AI cuts cards from pages it opens, and you should check each card against its link before reading it.

All downloads are on the latest release page.

Claude Desktop (one click)

  1. Install Claude Desktop if you don't have it.

  2. Download pf-debate.mcpb.

  3. Double-click the file (or drag it into Claude Desktop → Settings → Extensions), then click Install.

    • The Tabroom email and password fields are optional. They are only for OpenCaselist scouting, and Claude Desktop stores them securely.

  4. In a new chat, say: "Build the quick card library." This takes a few minutes, runs in the background, and gets about 6k PF cards. Then say "build the full card library" for about 266k cards, including the most-read Policy/LD impact cards (nuke war, econ, heg). That takes a few hours and about 1.2 GB, and it resumes if interrupted.

  5. Start prepping. Speech docs are saved to Documents/pf-debate/.

Claude.ai (web)

  1. Download pf-debate-skill.zip.

  2. On claude.ai: Settings → Capabilities. Turn on Code execution (skills need it) and Web search, then under Skills click Upload skill and choose the zip.

  3. Ask any PF question. Claude loads the skill automatically.

Alternative: create a Project, paste instructions.md into the project instructions, and upload pf-debate-guide.md as project knowledge.

ChatGPT

Download instructions.md and pf-debate-guide.md. Then use either option:

  • Custom GPT (needs a paid plan to create; anyone can use a shared one):

    1. Explore GPTs → Create → Configure.

    2. Paste instructions.md into Instructions and upload pf-debate-guide.md under Knowledge.

    3. Turn on Web Search.

    4. Save it. Share the link with your team so they need no setup.

  • Project (any plan with Projects): New project → Instructions: paste instructions.md → Files: add pf-debate-guide.md.

Gemini

  1. Download the same two files (instructions.md, pf-debate-guide.md).

  2. gemini.google.com → Gems → New Gem. Paste instructions.md into Instructions and add pf-debate-guide.md under Knowledge. Save it.

  3. You can share the Gem with teammates.

Tools (Claude Desktop / MCP installs)

Tool

What it does

pf_guide

PF knowledge: glossary, format, tactics, impacts, evidence ethics, how to build cases/blocks/scouts

search_cards / get_card

Plain-English or keyword search (meaning + keywords) over the local library of about 173k cut cards from OpenCaselist (PF, LD, Policy, camp files; 2014–2022), with "popular" ranking by how many teams read a card

find_sources

New evidence: recent papers (author affiliations for quals, free PDFs) and current news. Free, no API keys

fetch_source

Any article or PDF, turned into clean paragraphs plus citation metadata

suggest_cut

Proposes the best passage and highlights for your claim (exact source text)

cut_card

Cuts a card; the text must match the source verbatim or it's rejected. Full NSDA citations.

export_doc

A Verbatim-compatible .docx (Pocket/Hat/Block/Tag, underline, highlight), or format="gdocs" for a Google-Docs-ready page. version="read" makes the read-ready copy to speak from (tags, short cites, highlighted words only, each section timed)

read_speech

Exact speech timing at the debater's pace: total vs. the speech's limit, time per contention/block, what to trim, and the read-aloud script

caselist_search / caselist_team / caselist_download

OpenCaselist with your Tabroom login: round reports, cites, open-source docs as cards

build_library / library_status

Build the card library in the background and check its progress

Skills: pf-debate, pf-cut-card, pf-analyze, pf-case, pf-blocks, pf-scout (in src/pf_debate_mcp/skills/).

Developer install

Requires uv.

Claude Code (plugin: server + skills):

/plugin marketplace add SujayGG/pf-debate-mcp
/plugin install pf-debate@pf-debate

Any MCP host (Cursor, Codex, Windsurf, and others):

{
  "mcpServers": {
    "pf-debate": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/SujayGG/pf-debate-mcp", "pf-debate-mcp"]
    }
  }
}

Terminal commands (optional; the build_library tool does the same from chat):

uvx --from git+https://github.com/SujayGG/pf-debate-mcp pf-debate-mcp build-library           # full library (a few hours, resumable)
uvx --from git+https://github.com/SujayGG/pf-debate-mcp pf-debate-mcp build-library --quick   # PF cards only, a few minutes
uvx --from git+https://github.com/SujayGG/pf-debate-mcp pf-debate-mcp login                   # OpenCaselist via Tabroom
  • The full build keeps every PF and OpenEv card, plus LD/Policy cards read by 5 or more teams (--min-reads).

  • The login stores only the session cookie, never your password. You can also set TABROOM_USERNAME and TABROOM_PASSWORD.

  • Data lives in ~/.pf-debate/ (PF_DEBATE_HOME). Exports go to ~/Documents/pf-debate/ (PF_DEBATE_EXPORTS).

Evidence ethics

With the tools, cards are never generated: cut_card stores only exact slices of fetched source text. In web chat apps, the instructions forbid writing card text from memory, but nothing checks it automatically. Verify every card against its source. You are responsible for following NSDA evidence rules.

Development

uv run pytest
uv run pf-debate-mcp                         # stdio server
uv run python scripts/package.py             # build the release downloads into dist/
npx @modelcontextprotocol/inspector uv run pf-debate-mcp

Releasing: bump the version in pyproject.toml, manifest.json and .claude-plugin/plugin.json. Then run package.py and gh release create vX.Y.Z dist/*.

Card data: the OpenCaselist dataset (MIT), from the debate community via openCaselist. Code: MIT.

Available Tools

16 tools
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.

ParametersJSON Schema
NameRequiredDescriptionDefault
claimYes
max_newNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 burden of disclosing behaviors. It discloses that the tool fetches fresh papers, picks passages, highlights, and verifies verbatim, and that tags default to the claim. This is substantial behavioral context. It doesn't mention potential costs (e.g., network calls) or error conditions, but the main behaviors are transparent.

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 a single, densely packed sentence that communicates the core value proposition and key actionable steps. It could be improved by breaking into two sentences for readability, but it is efficient and front-loads the main purpose. No filler words.

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 moderate complexity (2 params, no enums, has output schema), the description covers the main behavior, parameter semantics, and usage instructions. The output schema likely conveys return value structure, so the description doesn't need to explain that. A minor gap is not specifying what happens when no new cards are found or how the 'verification verbatim' works in practice, but overall it's complete enough for an agent to use correctly.

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 explains that 'claim' is the claim to find evidence for, and 'max_new' is the maximum number of new cards to auto-cut. However, it doesn't detail the format of 'max_new' (e.g., default 4) beyond the schema's default, and it doesn't explain the relationship between existing and new cards further. The description adds some meaning but not exhaustive.

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 ('find evidence'), a resource (already-cut library cards plus auto-cut new cards), and the multi-step process it automates. It distinguishes itself from siblings like 'search_cards' and 'suggest_cut' by combining retrieval and new card creation in one step.

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 when to use this tool: when you have a claim and want evidence in one step, combining existing and new cards. It also gives guidance on how to use the results (rewrite tags, check quals). It does not explicitly mention alternatives like 'search_cards' or 'suggest_cut' as separate options, but the immediate context is clear.

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

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNodownload

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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

With no annotations, the description carries the disclosure burden, and it does well: it reveals background execution, one-time/resumable semantics, estimated durations, and library contents. It does not mention authorization requirements or whether a rebuild overwrites existing data, but the core behavioral traits are clearly disclosed.

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 key purpose and monitoring signal are front-loaded, and there is no filler. The mode explanation is dense and encoded in a long parenthetical, but it remains compact and information-rich.

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 single-parameter background setup tool with an output schema, the description covers the essential operational details: one-time nature, resumability, progress via library_status, mode options, duration, and scope. Nothing critical is missing for correct 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 schema only defines mode with a default and no description or enum, so the description must compensate. It fully defines the three mode values, the default, and the practical difference between them, giving the agent everything needed to choose correctly.

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 operation: install/build the card library, and distinguishes it from siblings like search_cards and library_status. It also names the concrete modes (download, quick, full), so an agent understands exactly what resource is affected and how.

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 gives explicit usage context: it is one-time and resumable, progress should be checked via library_status, and the mode choices are explained with tradeoffs (prebuilt vs raw dataset, minutes vs hours). This tells the agent when to use this tool and which mode fits the need.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description must carry the full burden. It explains that the tool imports cards as new cN ids, implying mutation of the library, but does not disclose side effects such as whether it modifies existing cards, requires network access, or is idempotent. This is a moderate disclosure, but gaps remain.

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 a single, compact sentence that front-loads the primary action ('Download an open-source .docx from OpenCaselist') and efficiently adds source guidance. No unnecessary fluff; though it packs multiple clauses, it remains readable.

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 simple input (one string) and presence of an output schema, the description covers the core purpose, path sourcing, and outcome. It does not mention error handling or prerequisites like network connectivity, but these are minor given the output schema will convey results.

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 only parameter 'path' has 0% schema coverage, so the description must add meaning. It does by specifying the path comes from caselist_team or a search 'download_path', giving practical guidance. However, it does not specify the path format (e.g., URL vs. file path), leaving some ambiguity.

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 action: download a .docx from OpenCaselist and import its cards as cN ids. It specifies the resource (OpenCaselist) and the outcome (cards you can read, analyze, re-cut, or export), which distinguishes it from siblings like search_cards (search) and get_card (retrieve existing).

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?

It provides context on where to get the path (caselist_team or search 'download_path') but does not explicitly state when to use this tool versus alternatives like get_card or export_doc. The intended use is implied by the download/import action, but no explicit when-not-to-use guidance is given.

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

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".

ParametersJSON Schema
NameRequiredDescriptionDefault
entriesYes
caselistNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the full burden. It discloses the return contents ('disclosed or not, round count, recent open-source doc paths... and cite titles') and input formats, but does not explicitly state that the operation is read-only, mention any authentication requirements, rate limits, or error behavior. It adds useful output details but lacks a full behavioral profile.

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 two sentences with the primary purpose front-loaded. It packs essential information (input format, output highlights, follow-up instruction) without excessive verbosity. It could be slightly more structured (e.g., separating input and output), but it is efficient and readable.

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 existence of an output schema, the description need not detail return values beyond what it does. It covers the core purpose, input format, and workflow context, but the unexplained 'caselist' parameter is a notable gap. Overall, it provides sufficient information for an agent to decide when and how to call the tool correctly, but not exhaustive.

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 description thoroughly explains the 'entries' parameter (CSV export format or one-line-per-team example), which is critical since schema coverage is 0%. However, the optional 'caselist' parameter is not mentioned at all, leaving its purpose and format unspecified. This partial compensation gives it a middle score.

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 states a specific action ('scout a whole tournament field') and resource ('every entry to its caselist page') in one call. It clearly distinguishes from siblings like caselist_search (single team lookup) and caselist_download (specific doc retrieval) by emphasizing batch matching of tournament entries.

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: when you need to process a full tournament field. It also mentions a follow-up workflow ('Then follow pf-scout "Prep out a tournament"') and indicates that the output feeds into caselist_download. However, it doesn't explicitly state when NOT to use it or name alternatives like caselist_team, leaving some room for inference.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
teamYes
schoolYes
caselistNo

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description must carry the full burden of disclosing behavior. It only says what the page contains (rounds and cites) and implies a read operation by calling it a 'page', but it does not disclose any side effects, auth requirements, error behavior, or whether the data is publicly accessible. This is a significant gap.

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 two sentences with no filler, front-loading the resource and its content before the use case. Every piece of information (page contents, purpose) is relevant, though it could be slightly tighter by merging the final clause, but overall it is efficient.

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

Completeness2/5

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

Given no output schema and no annotations, the description should explain the return structure and parameter behavior. It lists the fields present (tournament, side, opponent, etc.) but does not cover how parameters filter or shape the result, what the optional 'caselist' does, or any edge cases. It is only partially complete for a simple retrieval 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 for three undocumented parameters. It only implies that school and team identify the team, and does not explain the 'caselist' parameter or its default null behavior. The description adds minimal value beyond the raw schema.

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 identifies the tool as returning a team's caselist page with specific content (rounds and cites). It is highly specific about the resource, but it lacks an explicit verb like 'fetch' or 'get' and does not directly contrast with sibling tools such as caselist_search or caselist_download.

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 states a clear use case ('Use for scouting and building blocks against their case'), which gives context for when to call it. However, it does not mention alternatives, when not to use it, or how it differs from sibling tools like caselist_search or caselist_download, leaving the guidance implied rather than explicit.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagYes
urlYes
dateYes
qualsYes
titleYes
authorYes
end_quoteYes
highlightYes
paragraphNo
publisherYes
source_idYes
underlineNo
start_quoteYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. It explicitly discloses that quotes must be verbatim, which characters are normalized, that mismatches are rejected with a hint, and how highlight/underline defaulting works. It doesn't describe side effects of re-cutting an existing card, but the core validation behavior is transparent.

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 a single dense paragraph with no wasted sentences; every rule earns its place. It could be improved with structured parameter formatting, but it remains readable and front-loads the most important semantic definition of the body quote.

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 13-parameter tool with no annotations and an output schema present, the description covers the critical selection, validation, and re-cutting behavior. It is missing definitions for some required metadata fields, but the agent has enough to invoke the tool correctly in the main workflow.

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 0%, so the description must compensate. It does explain start_quote, end_quote, highlight, underline, source_id, and paragraph well. However, it leaves several required parameters—especially tag and quals—undefined, forcing the agent to infer their meaning from names 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?

The description states a specific action ('Cut an evidence card') and defines what that means: preserving exact source text from start_quote to end_quote. It clearly differentiates this from sibling tools like fetch_source, search_cards, and get_card by describing a card-creation/recutting operation.

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 gives concrete usage context: source_id comes from fetch_source, and a card id (cN, lib:N) can be used to re-cut an existing card. It does not explicitly say 'use this instead of search_cards/get_card', but the intended workflow and alternatives are reasonably clear from context.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
wpmNo
itemsYes
titleYes
formatNodocx
versionNofull
filenameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 and does well: it explains what the file contains, how each format/version behaves, and that it returns the file path. It stops short of disclosing side effects like overwriting behavior or where the file is written, which is a minor gap for a write operation.

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 dense but organized: item syntax first, then format options, then version options, then return value. Every sentence adds useful information, though the compact notation may require careful parsing.

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 complexity and the absence of annotations, the description covers the essential call path: how to construct items, what formats/versions do, and what is returned. The main missing piece is behavior around 'filename' and potential overwrites, but the overall guidance is sufficient for correct invocation.

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 thoroughly explains the 'items' array format, including valid dict shapes, verbatim headings, retagging syntax, and the meaning of 'format' and 'version'. It does not explicitly define 'filename' or 'title', though those are relatively self-evident from 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 opens with a specific verb and resource: 'Write a speech doc / case / block file.' It then details the item structure, formats, and versions, making it easy to distinguish from sibling tools like read_speech, cut_card, or caselist_download.

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 clear when-to-use guidance for formats ('docx' for Verbatim, 'gdocs' for Google Docs users) and versions ('full' for the email-chain file, 'read' for speaking from). It does not explicitly name alternative tools or state when not to use this tool, but the context is strong.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
url_or_idYes
start_paragraphNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 behavioral burden. It discloses that output is formatted as 'clean numbered paragraphs + citation metadata' and explains paging behavior via start_paragraph. This is meaningful context beyond the schema, though it stops short of covering error or access behaviors.

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?

Three sentences, each earning its place: the core purpose and output format, pagination guidance, and a directive about cut_card quote fidelity. The most important information is front-loaded and there is no filler.

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 is simple and the description covers the core behaviors, input modes, and pagination. An output schema exists, so return-value details are not required. The only notable gap is the lack of guidance on relationship to sibling source-finding tools, but the description remains sufficient for correct 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?

Schema description coverage is 0%, so the description must compensate for the bare parameter names. It does so fully: url_or_id is explained as either an article/PDF URL or a fetched-source id, and start_paragraph is explained as the pagination continuation mechanism. Both parameters are semantically clear.

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 identifies the verb ('Fetch') and resource ('article/PDF' or a previously fetched source by id), and describes the output as numbered paragraphs plus citation metadata. It does not explicitly differentiate from sibling tools like find_sources, so it falls just short of a 5.

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 gives clear operational context: fetching a source, re-opening a fetched source, and paging long sources. However, it does not explicitly state when to prefer this tool over sibling tools such as find_sources or search_cards, nor does it provide exclusions.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindsNo
limitNo
queryYes

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. It discloses that the tool is 'Free and keyless', that busy services are reported as 'skipped', and that results are recent and enriched with affiliations and PDF links. This goes beyond the bare schema, though the exact return structure and broader failure modes remain implied.

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 three tight sentences that front-load the main purpose and then add operational details about kinds, free/keyless access, skipped services, and the next workflow step. It is slightly dense but contains no wasted sentences.

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 three-parameter tool with no annotations and no output schema, the description covers the essential selection and invocation context: result substance, defaults, auth requirements, busy-service behavior, and the subsequent fetch/cut workflow. The main remaining gap is the 'limit' parameter.

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 does define 'kinds' and its default ('papers', 'news' default both), but it gives no explicit semantics for 'query' or 'limit'. The query's meaning is inferable from the tool's purpose, but 'limit' is left undocumented.

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?

Description states a specific verb and resource: 'Find NEW evidence to cut: recent scholarly papers (with author affiliations for quals and free PDF links) and current news articles.' It also references the downstream workflow with fetch_source, which helps distinguish it from search-oriented siblings, though it does not explicitly contrast with search_cards or caselist_search.

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 gives clear context for when to use the tool: as the first step in finding new evidence to cut, followed by 'fetch_source a result's url and cut it.' It also explains the behavior of the 'kinds' parameter and the 'skipped' case. However, it stops short of explicitly stating when not to use it or naming alternative tools.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNoread
card_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the burden. It discloses that 'read' view omits text (skipped marks), 'full' returns the whole body, and highlights how highlighted/underlined text is represented. This is meaningful behavioral detail beyond the schema.

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 front-loaded with the core purpose, then explains the two views efficiently. Every sentence adds value, and the formatting with view labels is scannable.

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 params, no enums) and the presence of an output schema, the description covers the key decision (which view to use) and the identifier format. It doesn't mention error cases or return structure, but the output schema likely covers that, and the description is sufficient for correct invocation.

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 explains the 'view' parameter's two values and their effects, and implies card_id format (lib:N or cN). It doesn't detail the exact string format for card_id beyond examples, but the core semantics are covered.

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 retrieves a card by ID and distinguishes two views: 'read' (compact) and 'full' (whole body). It names the resource (card) and the identifier format (lib:N or cN), making the purpose specific and actionable.

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 explains when to use each view: 'read' for compact reading, 'full' for judging context, finding indicts in unhighlighted text, or recutting. It doesn't explicitly name alternatives among siblings, but the view guidance provides clear context for usage.

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

library_statusB

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/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 does not state whether the operation is read-only, whether it triggers any side effects, or what the exact return format is. For a status tool this is acceptable, but the lack of any behavioral disclosure beyond the content list is a gap.

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?

A single, efficient sentence that front-loads the main purpose and lists the key details. It is concise without being under-specified.

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 parameterless status tool, the description covers the main information it returns (built status, per-event counts, years, progress). No output schema exists, so the description compensates adequately. It could mention return format, but for a status tool this is minor.

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?

There are zero parameters, so the baseline of 4 applies. The schema is empty and the description correctly implies no inputs are needed. Nothing more is required.

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 states a specific resource (the local card library) and the kind of information it provides (status, counts, coverage, progress). It is clear and distinct from siblings like build_library (which builds) and search_cards (which searches), though it does not explicitly name alternatives.

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?

No guidance on when to call this tool versus alternatives. It does not mention that it is a pre-build check or that it complements build_library. The agent must infer its role.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNopf-debate

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/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 burden of explaining behavior. It usefully discloses the reading order and the topical structure, including the parenthetical clarification that pf-blockfile means team block files. However, it does not explicitly state that invoking the tool with a particular 'name' returns that guide's content, nor does it describe any error or fallback 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 compact, front-loaded with the core purpose, and every element contributes information. The reading order, task guides, and references are each presented as short lists with no redundancy or filler.

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 is simple: one optional parameter with a default, an output schema is present, and no annotations are needed for a read-only knowledge-reference tool. The description names the default guide and all available guides, which is enough to select and invoke it. The only gaps are the implicit name-to-guide mapping and the lack of explicit sibling-tool routing, but these are minor given the low complexity.

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 has 0% description coverage, so the description must compensate, and it does. It effectively enumerates the valid values for the single 'name' parameter: pf-debate, the task guides, and the reference topics. It does not explicitly say 'name accepts one of these values,' but the list serves as the defacto parameter vocabulary.

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 identifies a specific, recognizable resource: PF debate knowledge, and enumerates its task guides and references. It is clearly distinct from sibling tools like cut_card or caselist_search because those work with cards/caselists while this provides guides and reference material. It lacks an explicit verb like 'retrieve' but the resource and content list make the purpose clear.

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 instruction 'Read "pf-debate" first' gives a clear starting point and the task-guide list implies which guide to select for a given task. However, it never explicitly says when to use this tool instead of sibling tools like cut_card, get_card, or caselist_search, nor does it state when not to use it. Usage guidance is implied rather than directly contrasted with alternatives.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
wpmNo
itemsYes
speechNoconstructive

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden and it pays off: it states counting is exact, never estimate, explains that a card counts tag/short cite/highlighted words only, and notes highlighting cannot be seen in pasted text. It doesn't explicitly state side-effect behavior, but the read-and-return framing makes the read-only nature reasonably clear.

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 opening sentence states purpose, then each parameter is explained in its own compact block with no filler. Despite covering detailed counting rules, it stays readable and every sentence contributes actionable information.

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?

An output schema exists, so return-format detail is not required. The description covers when to call it, how to shape inputs for both card-based and plain-text cases, the valid speech names and their timing, and the meaning of wpm. This is complete for an agent to invoke the tool correctly.

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 compensate, and it does fully: items is defined with the export_doc list format plus card-counting and plain-text rules; speech lists the four named speech types with durations; wpm gives pace guidance and defaults. Every parameter is given meaning beyond its title/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 names a specific verb and resource: 'Time a speech exactly and return its read-ready script', and immediately ties it to checking fit before export and deciding what to trim. This distinguishes it from export_doc and trimming tools without needing to open their schemas.

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?

'Use it to check a case fits before exporting, and to see what to trim' gives clear invocation context, and the plain-text note explains how to pass pasted cases. It doesn't explicitly list when-not-to-use or name an alternative tool, but the context is strong enough for an agent to select it appropriately.

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

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.
ParametersJSON Schema
NameRequiredDescriptionDefault
modeNohybrid
sideNo
sortNorelevance
eventNo
limitNo
queryYes
scopeNolibrary
year_fromNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/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 and it does a good job: it explains hybrid vs keyword search behavior, library vs mine scope semantics, and that 'popular' is a quality signal for impact cards. It doesn't explicitly state the operation is read-only or mention rate limits, but for a search tool the behavior is clearly disclosed.

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 purpose is front-loaded in the first sentence, and the parameter list is dense and readable. Every sentence adds useful context, though the scope line could be tightened slightly.

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 most parameters and gives strong guidance for effective searching, but it omits year_from and limit documentation and never addresses alternative tool selection. Since an output schema exists, the lack of return-format explanation is acceptable, but the missing parameter semantics keep it from being 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?

Schema description coverage is 0%, so the description must compensate. It explains mode, scope, sort, side, and event with concrete values and meanings. However, limit and year_from are left undocumented, and the query parameter is only implied by the intro sentence, leaving a noticeable gap.

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 'Search already-cut debate cards' with a specific verb and resource, and immediately clarifies that plain English and debate shorthand work. However, it doesn't explicitly distinguish itself from the sibling caselist_search, relying on the word 'already-cut' to imply the difference.

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 gives useful context about search modes, scope, and sort meaning, plus a tip to try alternate phrasings. But it never explicitly says when to prefer this tool over caselist_search or other siblings, and there are no when-not-to-use conditions.

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

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
claimYes
source_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the behavioral disclosure. It mentions the output fields (start_quote, end_quote, etc.) and says it returns exact source text, but it does not explicitly state whether the tool mutates anything or requires special permissions. The word 'suggest' implies non-mutating, but this is not made explicit, so the disclosure is partial.

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 core purpose ('Suggest a card for claim from a fetched source'), then explains the output and next step. No fluff or redundant details; every sentence 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 2-parameter tool with an output schema (though not shown), the description covers the workflow, input source, output fields, and how to use the result. It could mention that the source must already be fetched, but that is implied by 'from a fetched source'. It is sufficient for an agent to call 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?

Schema coverage is 0%, so the description must explain the parameters. It does: 'claim' is the claim to find evidence for, and 'source_id' is the identifier from fetch_source, with a hint about its format (sN / s_…). This adds meaning beyond the schema, though it could be more explicit about the claim's format or constraints.

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 suggests a card (passage + highlights) for a claim from a fetched source, naming the exact resource and action. It also distinguishes itself from siblings by referencing fetch_source as input and cut_card as the downstream consumer, so an agent understands its role in the workflow without opening the schema.

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 says to use it after fetch_source and before cut_card, and it tells the agent to review/adjust before passing to cut_card. This gives clear context for when it fits. It doesn't list exclusions or alternatives like auto_cut, but the workflow is implied well enough.

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. 3 tool updatesv0.4.5
    • Addedcaselist_entries
    • Changedexport_doc2 fields changed
      • addedInput schema / properties / version
        Added value: +{
        +  "default": "full",
        +  "title": "Version",
        +  "type": "string"
        +}
      • addedInput schema / properties / wpm
        Added value: +{
        +  "default": 160,
        +  "title": "Wpm",
        +  "type": "integer"
        +}
    • Addedread_speech
  2. 5 tool updatesv0.4.0
    • Addedauto_cut
    • Changedbuild_library1 field changed
      • changedInput schema / properties / mode / default
        Previous value: -"quick"New value: +"download"
    • Addedfind_sources
    • Changedsearch_cards1 field changed
      • addedInput schema / properties / mode
        Added value: +{
        +  "default": "hybrid",
        +  "title": "Mode",
        +  "type": "string"
        +}
    • Addedsuggest_cut
  3. 6 tool updatesv0.3.0
    • Changedcaselist_search3 fields changed
      • removedOutput schema / properties / result / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "additionalProperties": true,
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]
      • addedOutput schema / properties / result / items
        Added value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
      • addedOutput schema / properties / result / type
        Added value: +"array"
    • Changedcaselist_team1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "anyOf": [
        -        {
        -          "additionalProperties": true,
        -          "type": "object"
        -        },
        -        {
        -          "type": "string"
        -        }
        -      ],
        -      "title": "Result"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "caselist_teamOutput",
        -  "type": "object"
        -}New value: +null
    • Changedcut_card1 field changed
      • addedInput schema / properties / paragraph
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Paragraph"
        +}
    • Changedexport_doc1 field changed
      • addedInput schema / properties / format
        Added value: +{
        +  "default": "docx",
        +  "title": "Format",
        +  "type": "string"
        +}
    • Changedget_card1 field changed
      • addedInput schema / properties / view
        Added value: +{
        +  "default": "read",
        +  "title": "View",
        +  "type": "string"
        +}
    • Changedsearch_cards3 fields changed
      • removedOutput schema / properties / result / anyOf
        Removed value: -[
        -  {
        -    "items": {
        -      "additionalProperties": true,
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]
      • addedOutput schema / properties / result / items
        Added value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
      • addedOutput schema / properties / result / type
        Added value: +"array"
  4. 11 tool updatesv0.2.1
    • First observedbuild_library
    • First observedcaselist_download
    • First observedcaselist_search
    • First observedcaselist_team
    • First observedcut_card
    • First observedexport_doc
    • First observedfetch_source
    • First observedget_card
    • First observedlibrary_status
    • First observedpf_guide
    • First observedsearch_cards

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

Related MCP Connectors

Related MCP Servers