Borrowing it
Nothing to install: this file belongs to FlorianBruniaux/google-search-console-mcp. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/FlorianBruniaux/google-search-console-mcp/main/.claude/commands/add-tool.mdgit clone --depth 1 https://github.com/FlorianBruniaux/google-search-console-mcpWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/commands/florianbruniaux/google-search-console-mcp/add-tool)<a href="https://agentmods.dev/commands/florianbruniaux/google-search-console-mcp/add-tool"><img src="https://agentmods.dev/badge/commands/florianbruniaux/google-search-console-mcp/add-tool/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/commands/florianbruniaux/google-search-console-mcp/add-tool"><img src="https://agentmods.dev/badge/commands/florianbruniaux/google-search-console-mcp/add-tool.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00049 | $0.00917 |
| Opus 5 | $0.00024 | $0.00458 |
| Sonnet 5 | $0.00010 | $0.00183 |
| Haiku 4.5 | $0.00005 | $0.00092 |
Grade A, and why
add-tool scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 9d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 123 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Add Tool
Guided workflow for adding a tool to gsc-mcp without missing any registration step.
Usage
/add-tool keyword_gaps seo # Add to existing seo.py
/add-tool crawl_budget technical # Add to technical.py
/add-tool video_indexing # Claude selects the module
Phase 1: Plan
- Parse
$ARGUMENTSto extract tool name and target module (if given) - Read
src/gsc_mcp/tools/to identify which module fits this tool - Read
src/gsc_mcp/server.pyto understand the import style - Read
src/gsc_mcp/properties.pyto locate_ALL_TOOLS - Present the plan and confirm with the user before writing any code
Phase 2: Implement
Step 1: Write the function
In src/gsc_mcp/tools/<module>.py:
def <tool_name>(
site: str,
# params with type hints and defaults
) -> str:
"""One-line summary.
Full description of what this tool does, data lag if applicable,
row limits, and the fields returned in the response.
"""
svc = get_searchconsole_service()
# implementation
data = {}
return json.dumps(with_meta(data, tool="<tool_name>", params={"site": site}))
Rules for this step:
- Apply
@with_retry()if calling a Google API directly - Always use
with_meta()in the return value (never return raw JSON) - Add type hints to every parameter
- The docstring becomes the MCP tool description, so make it clear and useful
Step 2: Register in server.py
# Add import at the top:
from gsc_mcp.tools.<module> import <tool_name>
# Add registration below the existing registrations:
mcp.tool()(<tool_name>)
Step 3: Update properties.py
# Add to _ALL_TOOLS (alphabetical order):
_ALL_TOOLS = [
...,
"<tool_name>",
...
]
Update the count in get_capabilities docstring. If there were 36 tools, change to 37.
Step 4: Write tests
In tests/test_<module>.py, add at minimum:
def test_<tool_name>_returns_expected_structure():
# Arrange: wire up mock_gsc_service from conftest
# Act: call the tool
# Assert: verify _meta block + core result fields
result = json.loads(<tool_name>(site="sc-domain:example.com"))
assert "_meta" in result
assert result["_meta"]["tool"] == "<tool_name>"
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 9d ago First seen · 123 lines · 49 tokens per session scan A 392b02173901
add-tool is a command published in the GitHub repository FlorianBruniaux/google-search-console-mcp (10 stars, last pushed 8d ago), licensed MIT. It adds 49 tokens to every session and 917 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other commands, from other repositories
red-team
Stress-test a plan, strategy, PRD, or launch with a room of hostile expert personas before you commit.
config
Complete configuration guide for pair programming sessions.
start
Start a new pair programming session with AI assistance.
PyTest.GateKeeper
You are a Senior QA Automation Engineer with deep expertise in Python testing and the pytest framework.
develop
Implement skill development issues with TDD-governed workflow.
work-quick
Quick workflow for trivial changes (1-3 files, < 50 lines, zero risk).