kontra
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| KONTRA_CONFIG | No | Path to custom config file (default: ~/.kontra/config.json) | |
| GEMINI_API_KEY | No | API key for Google Gemini provider | |
| OPENAI_API_KEY | No | API key for OpenAI provider | |
| ANTHROPIC_API_KEY | No | API key for Anthropic provider |
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
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| debate_statusA | Show the saved debate setup (debaters, providers, models, round limit) and whether each provider's API key is set. Call this to confirm setup or when the user asks who is in the debate. |
| configure_debateA | Set and SAVE the debate setup. The settings persist across sessions until changed. Use this whenever the user wants to change who debates (their personalities, how many up to 5, which provider and model each uses) or the round limit (up to 12). Providers: anthropic, openai, google. Pass only the fields you want to change. |
| challengeA | Present your position to the saved debaters and run a discussion before you answer. When the user has activated kontra mode (e.g. said "kontra mode on"), ALWAYS run this loop before answering substantive questions. The loop: (1) call with your position; (2) answer the debaters' questions directly, respond to their specific points, ask questions back where their objections are ambiguous, then call again with the FULL transcript (debater replies under their names, your own turns as speaker 'host'); (3) keep going for as many rounds as the debate needs. The 'status' field is 'settled' once every debater has nothing new to add (or the round cap is hit), or 'error' if every debater failed; never synthesize while it is 'continue'. If the result is an onboarding message about a missing API key, relay it to the user and stop; do not retry until they confirm the key is set. To change the debaters or round limit, use configure_debate (it saves). Follow the 'instruction' field in the result for how to format your final reply. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 3 tools
Each tool has a clearly distinct purpose: 'challenge' runs the debate loop, 'configure_debate' modifies the setup, and 'debate_status' displays configuration and key status. No overlap in functionality.
All tool names use a consistent lowercase_with_underscores pattern. The names clearly indicate their action and scope.
Three tools perfectly scope the server's purpose: one for running debates, one for configuration, and one for status. This minimal set avoids bloat while covering the core functions.
The server covers the main debate workflow (run, configure, check status). A minor gap is the lack of a tool to stop a running debate or reset configuration, but these are not essential for the primary use case.