Skip to main content
Glama
kukumaka

MasterMind Lite

by kukumaka

MasterMind Lite

Ask Claude, Gemini, and Grok from a ChatGPT conversation through the provider CLIs you already use.

                    Claude
                   /
ChatGPT -> MasterMind Lite -> Gemini
                   \
                    Grok
                     |
                     v
             ChatGPT synthesis

ChatGPT remains the coordinator. MasterMind Lite sends one payload to independent advisers in parallel and returns their answers separately. It does not vote, rank models, run an internal debate, or act as an autonomous agent.

Why I built it

Different models often catch different flaws, edge cases, and approaches. Comparing them improved my planning and reviews, but repeatedly opening three sites, rebuilding context, copying prompts, and pasting every answer back into ChatGPT became tedious. MasterMind Lite makes that small workflow one local tool call while leaving the final judgment with ChatGPT and the user.

Related MCP server: Zen MCP Server

What it does

  • ChatGPT calls one local MCP consultation tool.

  • MasterMind Lite asks selected providers concurrently with the same payload.

  • Claude uses Claude Code, Gemini uses Google's Antigravity CLI (agy), and Grok uses Grok CLI.

  • Full provider results return independently, including partial success when one provider fails.

  • Stable thread keys continue the corresponding native provider conversations.

  • Model changes safely restart only the affected provider conversation.

  • No API keys, prompt bodies, response bodies, or telemetry are stored by MasterMind Lite.

Two modes

Exact mode

Say: “Send this exact prompt to MasterMind.”

mastermind_exact forwards the supplied text unchanged. Provider selection and model overrides are metadata: they are never appended or prepended to the prompt. MasterMind Lite verifies the outgoing UTF-8 payload with SHA-256 for every provider.

Feedback mode

Say: “Initiate MasterMind and get feedback on this.”

ChatGPT—not MasterMind Lite—constructs a concise, self-contained briefing from the relevant chat context. mastermind_feedback then sends that briefing unchanged to the independent advisers.

Friendly defaults

Ordinary consultations use these product presets automatically:

Adviser

Friendly preset

Current CLI resolution

Claude

Opus 5 / Medium

--model opus --effort medium (currently claude-opus-5)

Gemini

3.8 Flash / Extended

--model gemini-3.8-flash-high --effort high

Grok

Expert

--model grok-4.6 --reasoning-effort high

“Extended” and “Expert” are stable MasterMind Lite product names. The preset layer isolates users from provider-specific identifiers. mmlite doctor and mmlite config show display both the friendly preset and current resolved CLI settings.

When a user explicitly asks for another setting, ChatGPT passes a per-call override. Examples:

  • “Call MasterMind, but use Claude Opus 5 High.” uses Claude's Opus 5 / High preset only.

  • “Use Grok Simple this time.” uses Grok's Simple preset only.

  • A custom override can supply an explicit CLI model and/or effort.

The additional built-in mappings are Opus 5 / High → opus with high, and Grok Simple → grok-4.6 with low reasoning effort.

No model choice is required for normal calls. If an override changes a provider's resolved model or effort on a persistent thread, MasterMind Lite starts a fresh native session for that provider, returns thread_state: "restarted", and leaves the other provider sessions untouched. Returning to the default later may therefore restart that provider again.

Requirements

  • Windows with Python 3.11 or newer (v0.1 is built and live-tested on Windows).

  • Claude Code CLI, authenticated with a supported Claude account.

  • Google Antigravity CLI (agy), authenticated with a supported Google account.

  • Grok CLI, authenticated with a supported xAI account.

  • ChatGPT/Codex Desktop with local STDIO MCP support for the conversational workflow.

Provider access varies by product, subscription, region, and CLI release. MasterMind Lite does not guarantee that every consumer plan includes every model.

Install

git clone https://github.com/kukumaka/mastermind-lite.git
cd mastermind-lite
py -3.11 -m venv .venv
.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
python -m pip install .

Authenticate the provider CLIs using their supported flows:

claude auth login
agy models
grok login

agy models also verifies that the authenticated Antigravity model catalog is reachable. Then run:

mmlite doctor
mmlite config show

Configuration

The first command creates %USERPROFILE%\.aimastermind-lite\config.json. The simple schema-v3 defaults look like this:

{
  "schema_version": 3,
  "providers": {
    "claude": {
      "preset": "Opus 5 / Medium",
      "timeout_seconds": 150,
      "max_response_chars": 24000
    },
    "gemini": {
      "preset": "3.8 Flash / Extended",
      "timeout_seconds": 150,
      "max_response_chars": 24000
    },
    "grok": {
      "preset": "Expert",
      "timeout_seconds": 150,
      "max_response_chars": 24000
    }
  }
}

Advanced users can replace one preset with explicit settings:

{
  "preset": "Custom",
  "model": "provider-model-id",
  "effort": "high",
  "timeout_seconds": 150,
  "max_response_chars": 24000
}

Invalid fields, presets, or effort values fail before any provider call. Configuration is reloaded for every consultation. External CLI releases can rename models or flags; use doctor and the provider model-list commands after upgrading a CLI.

Local CLI

mmlite consult --thread project-review --prompt "What should I reconsider?"
mmlite consult --thread project-review --prompt-file C:\path\to\prompt.txt
mmlite consult --thread project-review --provider grok --prompt "Retry the question."
mmlite thread --thread project-review
mmlite reset --thread project-review

Repeat --provider to select more than one adviser. Provider selection supports targeted retries; MasterMind Lite never automatically repeats an entire consultation.

Connect to ChatGPT/Codex Desktop

Run the local STDIO server with:

mmlite-mcp

Or register the installed executable directly using a generic path such as:

<repo>\.venv\Scripts\mmlite-mcp.exe

In the desktop MCP server configuration, ensure the outer tool timeout exceeds the provider timeout. The recommended values are 150 seconds per provider and 180 seconds for the MCP tool:

[mcp_servers.mastermind_lite]
command = 'C:\path\to\mastermind-lite\.venv\Scripts\mmlite-mcp.exe'
tool_timeout_sec = 180

After adding the STDIO server, restart the desktop app and use /mcp to confirm these three tools:

  • mastermind_exact

  • mastermind_feedback

  • mastermind_reset_thread

Reliability and persistent threads

Each provider has an independent timeout. If Claude and Gemini finish while Grok times out, both completed answers return alongside Grok's structured error. Only the failed provider can be retried with providers: ["grok"]; successful siblings are not silently called again.

Each result includes thread_state (new, continued, or restarted), a locally reliable successful_turn_count, requested preset/model/effort, provider-reported settings when available, duration, prompt hash, and truncation metadata. Counts remain null when old state cannot support a reliable value.

Provider histories can drift because each CLI compacts and interprets context differently. Use a fresh thread or a self-contained feedback briefing when a clean comparison matters. Resetting a MasterMind thread forgets local mappings; it does not delete histories owned by provider CLIs.

Responses are limited to 24,000 characters per provider by default. A longer answer retains its beginning and end and returns truncated: true with original and returned character counts.

Privacy, security, and limitations

Prompts are sent to every selected provider. Authentication remains managed by the provider CLIs, and users remain responsible for those providers' data terms and subscription quotas.

  • Runtime state is local under %USERPROFILE%\.aimastermind-lite; prompt and response bodies are not persisted.

  • Known provider API-key environment variables are removed from child processes.

  • Claude receives an empty tool set and strict empty MCP configuration.

  • Antigravity exposes no complete no-tools switch; its isolation is weaker even though it runs headlessly with sandbox selection and disabled slash commands.

  • Grok's CLI-level tools and permissions are denied, but its installed documentation does not claim Windows OS sandbox enforcement.

  • External CLI changes can require adapter updates.

  • Multiple opinions can expose missed assumptions; they do not guarantee a better answer.

  • MasterMind Lite is intentionally not an autonomous agent framework or browser automation system.

Please report security issues using the process in SECURITY.md.

Development

python -m pip install -e ".[dev]" build
pytest -q
python -m build

The test suite installs an automatic guard that rejects attempts to launch claude, agy, or grok, so automated tests do not intentionally consume provider quota. The GitHub Actions workflow runs only this offline suite and package build.

See POST_V0_1.md for deliberately deferred ideas and CONTRIBUTING.md for the small contribution guide.

License

MIT. See LICENSE.

Available Tools

3 tools
mastermind_exactAsk all three advisers with an exact promptA

Send exactly the supplied prompt, unchanged, to Claude, Gemini, and Grok independently. Use this when the user says 'same prompt', 'exact prompt', 'exactly this', or equivalent. Do not rewrite, summarize, prepend, append, or provider-specialize prompt. On the first MasterMind call, create a short stable topic-based thread_key; reuse it on later calls in this chat unless the user asks for a fresh/reset thread. Do not ask the user to invent a key unless necessary. The result echoes thread_key and a SHA-256 hash. Defaults are used automatically. Only when the user explicitly requests a different setting, pass provider_overrides, for example {'claude': {'preset': 'Opus 5 / High'}} or {'grok': {'preset': 'Simple'}}. A custom override may instead contain model and/or effort. Overrides are metadata and must never be inserted into the prompt. Changing resolved model or effort restarts only that provider's native session.

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYes
providersNo
thread_keyYes
reset_threadNo
provider_overridesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations, the description discloses real behavioral traits: the response echoes thread_key plus a SHA-256 hash, changing a resolved model or effort restarts only that provider's native session, and overrides are metadata that never enter the prompt. These are consequential, non-obvious side effects that structured fields do not convey.

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 core directive is front-loaded in the first sentence, and the remainder is largely non-redundant operational guidance. It is dense and slightly long, but nearly every sentence carries an actionable constraint (thread lifecycle, override rules, session restart).

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?

With an output schema present, return values need not be explained, yet the description still notes the thread_key/hash echo. It covers thread lifecycle, defaults, and override semantics thoroughly; only the providers selection parameter lacks direct explanation, a minor omission.

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 carry semantics, and it largely does: prompt (exact, unmodified), thread_key (create a stable topic-based key on first call, reuse thereafter), and provider_overrides (with preset examples and the note that model/effort may be used). The 'providers' array and 'reset_thread' flag are only indirectly covered (via the named providers and the 'fresh/reset thread' phrasing), leaving a small gap.

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 precise verb and resource: it sends 'exactly the supplied prompt, unchanged' to three named providers independently, and the title reinforces the 'three advisers' framing. Nothing about its function is ambiguous, and it is trivially distinguishable from siblings like mastermind_reset_thread and mastermind_feedback.

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?

It gives explicit trigger phrases ('same prompt', 'exact prompt', 'exactly this') and a concrete negative directive ('Do not rewrite, summarize, prepend, append, or provider-specialize'). It also states when to pass provider_overrides ('Only when the user explicitly requests a different setting') versus relying on defaults, which is a clear use/not-use boundary.

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

mastermind_feedbackAsk all three advisers for contextual feedbackA

Send one self-contained briefing, unchanged, to Claude, Gemini, and Grok independently. Before calling, read relevant current conversation context and write a neutral briefing that includes the complete prompt/artifact/plan being reviewed, decisions already made, and the exact question. Include only context that helps. Do not anchor advisers with one another's responses unless the user explicitly asks. The service does not construct or edit the briefing. Create a short stable topic-based thread_key on the first call and reuse it later in this chat. Defaults are used automatically. Only when the user explicitly requests a different setting, pass provider_overrides, for example {'claude': {'preset': 'Opus 5 / High'}} or {'grok': {'preset': 'Simple'}}. A custom override may instead contain model and/or effort. Overrides are metadata and must never be inserted into the prompt. Changing resolved model or effort restarts only that provider's native session.

ParametersJSON Schema
NameRequiredDescriptionDefault
purposeNo
briefingYes
providersNo
thread_keyYes
reset_threadNo
provider_overridesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false, openWorldHint=true, idempotentHint=false, destructiveHint=false. The description adds non-obvious behaviors: the service does not construct or edit the briefing, defaults are used automatically, overriding model or effort restarts only that provider's native session, and overrides are metadata never inserted into the prompt. This is substantial added context beyond the annotations, though rate limits and failure modes are unstated.

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?

Front-loads the core action and thread_key guidance, but several sentences restate or overlap (e.g. briefing content guidance spans multiple sentences, and 'Defaults are used automatically' plus the override paragraph could be tightened). Long but mostly earned; some redundancy around override semantics.

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 a 6-parameter, open-world, non-idempotent fan-out with an output schema, so the description must cover creation, thread reuse, override scoping, and session restart semantics. It covers these well, though it leaves purpose, providers, and reset_thread unexplained and does not describe concurrency or failure behavior across providers.

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 defines briefing (self-contained, complete prompt/artifact/plan, exact question), thread_key (short, stable, topic-based, reuse in chat), provider_overrides (only when explicitly requested, format example, may contain model/effort, metadata only), and the restart behavior of model/effort changes. It does not explain purpose, providers, or reset_thread parameters.

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?

States a specific verb+resource: sends one self-contained briefing to Claude, Gemini, and Grok independently, and explicitly says the service does not construct or edit the briefing. Distinguishes itself from mastermind_exact and mastermind_reset_thread by describing the multi-advisor fan-out and the thread_key reuse pattern.

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?

Gives explicit when-to-use rules: read current conversation context before calling, include the complete prompt/artifact/plan and decisions already made, do not anchor advisers with one another's responses unless the user asks. Also names reset_thread via the sibling mastermind_reset_thread indirectly and states thread_key must be created on first call and reused.

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

mastermind_reset_threadReset a MasterMind threadA
DestructiveIdempotent

Forget the local Claude, Gemini, and Grok session mappings for thread_key. Use when the user asks to start fresh; a later consultation creates three new native conversations.

ParametersJSON Schema
NameRequiredDescriptionDefault
thread_keyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

Annotations already carry destructiveHint=true, idempotentHint=true, and readOnlyHint=false. The description goes beyond that by explaining the consequence: mappings are forgotten and a later consultation spawns three new native conversations. It does not mention auth requirements or rate limits, but the behavioral consequence is well disclosed.

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 tight sentences, front-loaded with the action and its consequence, followed immediately by the usage condition. 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 (one param, output schema present) and the description covers the core behavior and post-reset outcome. It lacks only explanation of the thread_key identifier, which is a minor gap for a single-param tool with an output schema.

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?

Only one parameter exists and schema coverage is 0%, so there is no schema documentation to lean on. The description uses thread_key but never explains what a thread key is or how it is obtained. With one parameter, baseline 4 would apply only if the description compensated, which it does not.

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?

States a specific verb ('forget') and the exact resource affected: local Claude, Gemini, and Grok session mappings for thread_key. It clearly distinguishes itself from siblings like mastermind_exact and mastermind_feedback, though 'reset' in the title vs 'forget' in the description is slightly loose.

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 when the user asks to start fresh,' giving a clear trigger. It does not name alternatives or when-not-to-use conditions, so it stops short of a 5.

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.1.0
    • First observedmastermind_exact
    • First observedmastermind_feedback
    • First observedmastermind_reset_thread

TDQS

A4.1/5.0

Scored across 3 tools

Disambiguation4/5

reset_thread is clearly distinct, but exact and feedback both fan out unchanged content to the same three providers, so their boundary depends on intended usage rather than different mechanics. The descriptions provide useful cues, so misselection is possible but not severe.

Naming Consistency3/5

All names share the mastermind_ prefix and snake_case, which is readable. However, only reset_thread follows a verb_noun pattern; exact and feedback are noun/adjective labels, making the overall convention mixed.

Tool Count4/5

Three tools form a minimal but focused surface for a Lite multi-model consultation server. Each tool has a role, though the set is slightly thin for full thread lifecycle management.

Completeness4/5

Core operations are covered: send exact prompts, send briefing-style feedback, and reset thread mappings. Minor gaps exist, such as no way to list or inspect existing thread_key mappings, but agents can work around this.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    Orchestrates multiple AI models (Gemini, OpenAI, Claude, local models) within a single conversation context, enabling collaborative workflows like multi-model code reviews, consensus building, and CLI-to-CLI bridging for specialized tasks.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Query multiple AI models (GPT-4, Claude, Gemini, Grok) in parallel for diverse perspectives. Get different expert viewpoints when stuck or need enhanced reasoning.
    1
    MIT