MCP Tools
This server provides tools to obtain second opinions or answers from ChatGPT, Google Gemini, and DeepSeek. Each tool accepts a required context and an optional question; if no question is given, a general second opinion is returned. You can use them individually or combine all three for multi-model consultation, comparing agreements and disagreements. DeepSeek is typically the lowest latency option (~1.4s).
Enables getting AI second opinions from ChatGPT by asking questions about saved contexts, providing alternative perspectives on code, suggestions, and conversations
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Toolssave this code snippet for the authentication module"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Claude Toolz
A Claude Code plugin marketplace: four plugins for second opinions, security triage, docs upkeep, and pre-commit setup.
Nothing here needs to be installed from a package index. The plugins are markdown, shell, and one standard-library Python script.
Install
/plugin marketplace add taylorleese/claude-toolz
/plugin install ask-llm@claude-toolz
/plugin install precommit-detect@claude-toolz
/plugin install resolve-github-alerts@claude-toolz
/plugin install revise-all-docs@claude-toolzInstall only the ones you want — they are independent.
Related MCP server: Memory MCP
Plugins
ask-llm
Gets a second opinion from a non-Claude frontier model: Codex (OpenAI's coding agent), Antigravity (Google's coding agent), or DeepSeek.
Two ways in. Ask in plain language — "ask Codex what it thinks of this schema", "get a second opinion on this plan", "what would another model say about this bug" — and Claude invokes the skill. Or drive it explicitly:
/ask-llm codex is this migration reversible?
/ask-llm all which caching strategy would you pick here?
/ask-llm does this error handling miss anything?The first word selects the provider when it is codex, agy, deepseek, or all; otherwise the whole argument is the question and it defaults to
Codex. all runs all three concurrently — OpenAI, Google, and DeepSeek — and summarizes where they agree and disagree.
Providers come in two flavors. CLI providers drive a locally installed agent that authenticates with your own subscription, so there is no API key to
manage at all. HTTP providers call a REST endpoint and need a key exported in the shell profile Claude Code inherits (~/.zshrc, ~/.bashrc).
Provider | Transport | Auth | Default model | Model override |
| CLI |
| CLI default |
|
| CLI | authenticated on first run — no API key | CLI default |
|
| HTTP |
|
|
|
codex is the best default: no key to manage, a coding agent rather than a raw chat model, and it runs in a read-only sandbox so it cannot touch your
working tree. agy is its Google counterpart and the best partner for a cross-vendor check.
Measured on a trivial prompt, the split is roughly:
Provider | Latency |
| ~1.4s |
| ~5.5s |
| ~6.4s |
The CLI agents reason before answering; that is the cost of depth and of needing no API key. Reach for deepseek when you want an answer immediately.
One constraint on agy: it ignores stdin, so context rides in the command-line argument and is capped at 256 KB. Larger contexts are refused with a clear
error and should go to codex, which reads stdin and has no such limit.
Checking readiness
/ask-llm status prints what is actually usable on this machine — no model call, so it costs nothing:
PROVIDER TRANSPORT STATE DETAIL
deepseek http ready DEEPSEEK_API_KEY is set
codex cli ready Logged in using ChatGPT
agy cli unknown installed; no status command, auth verified only when calledWhen a CLI provider's session has lapsed it reports unauthenticated along with the exact command to run. Logins are interactive, so the script never
tries to drive one itself — it names the command and Claude relays it.
Turning a provider off
Set ASK_LLM_DISABLED_PROVIDERS to a comma-separated list to hide providers you cannot use, so they are never picked and never surface an error:
export ASK_LLM_DISABLED_PROVIDERS=deepseekThe script uses only the Python standard library — nothing to install and no dependency to keep patched.
precommit-detect
Read-only check for pre-commit setup state. Registers SessionStart and PostToolUse:EnterWorktree hooks that detect whether the current repo's
.pre-commit-config.yaml is wired up — pre-commit binary present, .git/hooks/pre-commit installed, Docker daemon reachable when the config requires it.
When something is missing, the hook surfaces the gap as additionalContext so Claude can walk you through approval-gated installs (one prompt per missing
item — never auto-installs).
resolve-github-alerts
Triages and resolves GitHub security alerts (Dependabot, code scanning, secret scanning) across pip / pip-tools / poetry / uv / npm / yarn / pnpm / cargo / go-modules / Docker / GitHub Actions ecosystems. Run it in any repo to:
Fix failing Dependabot PRs (lint/test issues)
Bump vulnerable dependencies and recompile lockfiles
Remediate code scanning and secret scanning alerts
Submit a single PR with all fixes for manual review
Auto-detects the project's verify commands (Makefile targets, pre-commit, ruff, pytest, npm scripts) — no per-project configuration required.
Two ways in, same as ask-llm. Run it explicitly, optionally narrowing the scope:
/resolve-github-alerts
/resolve-github-alerts dependabot onlyOr just ask — "fix the security alerts on this repo", "clean up the failing Dependabot PRs" — and Claude invokes the skill. Because it creates a branch and opens a pull request, the skill is written to trigger only on a clear request to remediate, not when you are merely asking what the alerts are.
revise-all-docs
Two ways to keep CLAUDE.md, README.md, and docs/**/*.md in sync — pick by intent.
/revise-all-docs — "I just finished some work. Capture what we learned."
Reads the current conversation, pulls out commands discovered, gotchas hit, and patterns enforced, and proposes additions to the right doc file for each
finding (project-internal context → CLAUDE.md, user-facing onboarding → README.md, deeper how-to → docs/). Run this at the end of a session that
uncovered something worth recording.
/improve-all-docs — "Forget the session. Audit the docs as they stand today."
Statically scans every doc file, scores each against type-appropriate rubrics (install steps actually work? public command/API surface complete? versions and paths current? intra-doc links resolve? duplicated content?), then proposes targeted fixes — including deletions of stale or duplicated content, not just additions. Run this during cleanup passes, before a release, or when docs feel out of sync with the code.
The all-docs-improver skill is the same audit auto-invoked when you ask in plain language ("are my docs up to date?", "check the README and docs"). The
slash command is explicit; the skill is hands-free.
Required dependency
Both surfaces delegate CLAUDE.md work to the official claude-md-management plugin:
/plugin install claude-md-management@anthropicsDevelopment
git clone https://github.com/taylorleese/claude-toolz.git
cd claude-toolz
make install-devCommand | What it does |
| Run the test suite |
| Run all linters via pre-commit |
| Auto-format |
| Verify every plugin in |
| Refresh the local marketplace mirror and installed plugins |
| format + lint + test |
Releasing a plugin change
There is no package to publish. Bump version in the plugin's .claude-plugin/plugin.json, merge to main, then run make refresh-plugins. Claude Code
keys its install cache by version, so skipping the bump makes the update a silent no-op.
Repository layout
claude-toolz/
├── .claude-plugin/
│ └── marketplace.json # the four plugins advertised to Claude Code
├── plugins/
│ ├── ask-llm/
│ ├── precommit-detect/
│ ├── resolve-github-alerts/
│ └── revise-all-docs/
├── scripts/
│ └── check_plugins.py # marketplace manifest validator
└── tests/License
MIT
Available Tools
3 toolsask_chatgptA
Ask ChatGPT a question about a context, or get a general second opinion
| Name | Required | Description | Default |
|---|---|---|---|
| context | Yes | The context text to analyze or ask about | |
| question | No | Optional specific question to ask about the context. If not provided, gets a general second opinion. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as response format, latency, or limitations. The description is minimal, leaving the agent uninformed about important behavioral aspects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that is front-loaded and efficient, though very short.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema and annotations, the description should cover return values or usage constraints. It does not, leaving the agent with incomplete context for invoking the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds value beyond the schema by explaining that the 'question' parameter is optional and that omitting it results in a general second opinion. This enhances understanding of parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Ask ChatGPT a question about a context, or get a general second opinion'. It explicitly names the AI model and differentiates from sibling tools by name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for asking questions or obtaining second opinions, but lacks explicit guidance on when to prefer this tool over siblings or any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ask_deepseekB
Ask DeepSeek a question about a context, or get a general second opinion
| Name | Required | Description | Default |
|---|---|---|---|
| context | Yes | The context text to analyze or ask about | |
| question | No | Optional specific question to ask about the context. If not provided, gets a general second opinion. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and description fails to disclose behavioral traits like response format, error handling, or required permissions. Only states basic function without additional context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is one clear sentence that front-loads the main action. Could be slightly expanded but is efficiently concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given low complexity and no output schema, the description is minimal but adequate for a simple query tool. However, it lacks details on response behavior, limiting full context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers both parameters with descriptions, and the tool description adds value by clarifying the optional nature of question (general opinion when omitted). Baseline 3 with added context yields 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Ask DeepSeek a question' and differentiates from general second opinion. It implicitly distinguishes from siblings (ask_chatgpt, ask_gemini) by naming DeepSeek but does not explicitly contrast use cases.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs siblings. The phrase 'get a general second opinion' hints at use case but no when-not-to-use or alternatives mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ask_geminiB
Ask Google Gemini a question about a context, or get a general second opinion
| Name | Required | Description | Default |
|---|---|---|---|
| context | Yes | The context text to analyze or ask about | |
| question | No | Optional specific question to ask about the context. If not provided, gets a general second opinion. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavioral traits. It only mentions the action and modes, omitting details such as whether the tool is stateless, rate limits, permission requirements, or what happens if context is malformed. Minimal behavioral information is provided.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It efficiently conveys the core purpose and primary use cases, earning a perfect score for conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with no output schema, the description minimally covers the input and purpose but omits what the agent can expect as a return value or any error handling. Given the lack of annotations and output schema, the description could be more complete, though it is adequate for basic use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already explains both parameters (context and question) adequately. The description's phrase 'general second opinion' partly echoes the schema's default behavior for missing question, adding little extra meaning. A baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (ask Gemini) and resource (Google Gemini), with two distinct use cases: asking a question about a context or getting a general second opinion. However, it does not explicitly differentiate from sibling tools like ask_chatgpt or ask_deepseek, relying on the name for distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies two usage modes but provides no guidance on when to use this tool over its siblings (ask_chatgpt, ask_deepseek) or when to choose one mode over the other. There are no explicit when-to-use or when-not-to-use instructions, leaving the agent to infer usage.
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.
3 tool updates
v0.6.1- First observed
ask_chatgpt - First observed
ask_deepseek - First observed
ask_gemini
TDQS
Scored across 3 tools
All three tools have nearly identical descriptions, only differing by the AI model name. An agent would struggle to choose between them without additional context on model preferences.
All tools follow a consistent 'ask_{model}' pattern, making naming predictable and clear.
Three tools is reasonable for a server that simply provides access to multiple AI models. It is slightly minimal but not out of place.
The tool set covers the core function of querying different AI models, but lacks features like conversation history, context management, or parameter customization, which are notable gaps.
Maintenance
Related MCP Connectors
Persistent context for Claude. Your AI always knows your projects and next actions across sessions.
Persistent memory for Claude Code and Cursor. Stop re-explaining your project every session.
Shared memory for AI coding agents. Save once, reuse from Cursor, Claude Code, Codex.
Personal context for every AI: search, read, and write back to your private Markdown library.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceProvides persistent context management for Claude AI coding assistants, allowing you to save and restore conversation context, create checkpoints, and organize information across sessions to prevent losing important work history and decisions during long coding sessions.208 npm134MIT
- AlicenseAqualityBmaintenanceProvides persistent cross-session memory and full-text search for AI coding assistants, storing project context, decisions, and preferences while enabling searchable access to conversation history via local SQLite.81MIT
- AlicenseAqualityBmaintenanceProvides persistent, searchable memory across AI coding agent and chat history (Claude Code, Codex, Gemini CLI, ChatGPT, and more) via retrieval-augmented generation, enabling semantic and hybrid search to retain context across sessions.5MIT
- AlicenseNot gradedqualityBmaintenanceProvides a local long-term memory layer for AI coding tools like Cursor and Claude Code, enabling cross-session, cross-tool sharing of project facts, user preferences, decisions, and workflows.12 npm2MIT