Skip to main content
Glama

Grok Web MCP

Generate Grok Imagine images and videos from any AI agent (Claude, Codex, Gemini CLI, Cursor, VS Code, Windsurf and more), using the grok.com account you are already logged into. No xAI API key. No per-image billing.

CI License: MIT Python MCP Chrome MV3


Why

Every other Grok Imagine MCP server calls the paid xAI API. If you already pay for a Grok plan, you are paying twice.

Grok Web MCP drives the Grok Imagine page in your own Chrome, through a small companion extension, and hands the finished files back to your AI assistant. Ask Claude for "a 9:16 cover for my podcast, two options", and two JPGs land in a folder a few seconds later.

Grok Web MCP

API-based Grok MCPs

xAI API key

not needed

required

Cost

your existing Grok plan

billed per image / per video

Setup

one command + load the extension

API key + billing

Quota protection

built-in daily limits and batch pre-check

usually none

Several AI sessions at once

shared queue

separate

Agents

any MCP agent, stdio or HTTP

varies

Related MCP server: Grok Image Generation MCP Server

Screenshots

Features

  • 🖼️ Images: aspect ratio (16:9, 9:16, 1:1, 2:3, 3:2), Speed / Quality mode, 1 to 4 images per call.

  • 🎬 Video (experimental): text-to-video or animate a local image.

  • 📦 Batches: run up to a dozen prompts in one call; the whole batch is priced and validated before anything is submitted.

  • 📐 Exact output sizes: size="1344x768" cover-crops to exact pixels (ready for video models), or max_side to shrink.

  • 🛡️ Quota guard: a per-day ledger with limits you control, so an over-eager agent cannot burn your daily Grok allowance.

  • 🤖 Every agent: stdio for Claude, Codex, Gemini CLI, Cursor, VS Code, Windsurf, Cline, Zed, Goose…; --http / --sse for agents that connect by URL.

  • 🔁 Multi-session: open five agent windows; the first becomes the hub and the rest queue through it.

  • 🔒 Local and locked down: loopback only, web pages refused, only your pinned extension id may run jobs.

  • ⚙️ Configurable: default aspect, mode, image count, timeouts and every protection, via config.json or env vars.

  • 💾 Never overwrites: files are saved as name_1.jpg, name_2.jpg, name_1_2.jpg…

Quick start

You need Python 3.10+, uv, Google Chrome (or any Chromium browser) and a grok.com account.

1. Add the MCP server to your AI agent

It works with any agent that supports MCP. Most agents launch it as a local command (stdio):

uvx --from git+https://github.com/h4775346/grok-web-mcp grok-web-mcp

One-click install: Install in Cursor Install in VS Code

Agent

How to add it

Claude Code

claude mcp add -s user grok-web -- uvx --from git+https://github.com/h4775346/grok-web-mcp grok-web-mcp

OpenAI Codex CLI

codex mcp add grok-web -- uvx --from git+https://github.com/h4775346/grok-web-mcp grok-web-mcp

Gemini CLI

JSON below in ~/.gemini/settings.json (snippet further down)

VS Code (Copilot)

button above, or code --add-mcp '{"name":"grok-web","command":"uvx","args":["--from","git+https://github.com/h4775346/grok-web-mcp","grok-web-mcp"]}'

Cursor

button above, or the JSON below in ~/.cursor/mcp.json

Claude Desktop

JSON below in claude_desktop_config.json (Settings → Developer → Edit config)

Windsurf

JSON below in ~/.codeium/windsurf/mcp_config.json

Cline

MCP Servers → Configure → JSON below in cline_mcp_settings.json

Roo Code / Kilo Code

JSON below in .roo/mcp.json / .kilocode/mcp.json (or the global MCP settings)

Kiro

JSON below in .kiro/settings/mcp.json

Amazon Q Developer CLI

JSON below in ~/.aws/amazonq/mcp.json

JetBrains AI Assistant / Junie

Settings → Tools → AI Assistant → MCP → Add → paste the JSON below

LM Studio

Program → Install → Edit mcp.json → JSON below

Warp

Settings → AI → MCP servers → Add → paste the JSON below

Zed, Goose, OpenCode, Continue

see the snippets below

Anything else

stdio command above, or the HTTP endpoint below

The JSON most agents use:

{
  "mcpServers": {
    "grok-web": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/h4775346/grok-web-mcp", "grok-web-mcp"]
    }
  }
}
{
  "servers": {
    "grok-web": {
      "type": "stdio",
      "command": "uvx",
      "args": ["--from", "git+https://github.com/h4775346/grok-web-mcp", "grok-web-mcp"]
    }
  }
}
[mcp_servers.grok-web]
command = "uvx"
args = ["--from", "git+https://github.com/h4775346/grok-web-mcp", "grok-web-mcp"]
{
  "mcpServers": {
    "grok-web": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/h4775346/grok-web-mcp", "grok-web-mcp"]
    }
  }
}
{
  "context_servers": {
    "grok-web": {
      "source": "custom",
      "command": "uvx",
      "args": ["--from", "git+https://github.com/h4775346/grok-web-mcp", "grok-web-mcp"]
    }
  }
}
extensions:
  grok-web:
    type: stdio
    name: grok-web
    cmd: uvx
    args: ["--from", "git+https://github.com/h4775346/grok-web-mcp", "grok-web-mcp"]
    enabled: true
    timeout: 600
{
  "mcp": {
    "grok-web": {
      "type": "local",
      "command": ["uvx", "--from", "git+https://github.com/h4775346/grok-web-mcp", "grok-web-mcp"],
      "enabled": true
    }
  }
}
name: grok-web
version: 0.0.1
schema: v1
mcpServers:
  - name: grok-web
    command: uvx
    args: ["--from", "git+https://github.com/h4775346/grok-web-mcp", "grok-web-mcp"]

Start the server yourself and point the agent at the URL:

uvx --from git+https://github.com/h4775346/grok-web-mcp grok-web-mcp --http 8000   # http://127.0.0.1:8000/mcp
uvx --from git+https://github.com/h4775346/grok-web-mcp grok-web-mcp --sse 8000    # http://127.0.0.1:8000/sse

Any number of agents can connect at once; they share one queue and one daily budget. The HTTP server listens on 127.0.0.1 only.

Tip: video jobs can take several minutes. If your agent has an MCP tool timeout setting, give it 10 minutes (for example timeout: 600 in Goose or "timeout": 600000 in Cline).

2. Load the Chrome extension

  1. Download grok-web-mcp-extension.zip from the latest release and unzip it, or use the extension/ folder of a clone.

  2. Open chrome://extensions, switch on Developer mode, click Load unpacked and pick the folder.

  3. Pin the extension. Its badge turns green on as soon as your MCP client is running.

3. Log in to grok.com

Use the same Chrome profile. That's it. Ask your assistant:

Make two 9:16 images of a neon-lit Cairo rooftop at night with Grok, quality mode, and save them in rooftop/.

Tools

Tool

What it does

grok_generate_image

prompt, aspect, n (1–4), mode (speed/quality), size or max_side, out_dir, name. Returns the saved file paths.

grok_batch

A list of image jobs run in order. Refused up front if it does not fit today's budget; jobs over confirm_over submissions need confirm=true.

grok_generate_video

Experimental. prompt, optional image_path to animate, aspect. Returns the mp4 path.

grok_status

Is the extension connected, is a grok tab open, are you logged in.

grok_usage

Today's submissions, images and videos against your limits.

grok_set_limits

Change the daily limits (the agent is told to ask you first).

grok_settings

The settings in effect, where each one came from, and what each does.

grok_generate_image(
    prompt="Cinematic night rooftop in Cairo, warm neon, 35mm",
    aspect="16:9",
    n=2,
    mode="quality",
    out_dir="rooftop",
    size="1344x768",
)

grok_batch(
    out_dir="covers",
    jobs=[
        {"prompt": "minimal album cover, orange sun over the Nile", "name": "cover_a", "aspect": "1:1", "n": 2},
        {"prompt": "retro 80s synthwave album cover", "name": "cover_b", "aspect": "1:1"},
    ],
)

grok_generate_video(
    prompt="slow push-in, hair moving in the wind", image_path="rooftop/grok_1.jpg", aspect="16:9", out_dir="clips"
)

Quota guard

Every Grok submission counts against your plan's Imagine allowance (one image submission returns 2 images; a video costs much more). The server keeps a ledger in ~/.grok-web-mcp/usage.json and refuses work beyond ~/.grok-web-mcp/limits.json:

{"max_image_submissions_per_day": 30, "max_videos_per_day": 5, "max_jobs_per_batch": 12, "confirm_over": 10}

A refusal tells the agent exactly where it stands, for example Grok budget: this needs 2 image submission(s) but 29/30 are already used today, so nothing was submitted. A job that fails after it was submitted (moderation, timeout) still counts, because Grok still charged it.

Settings

Everything works out of the box; nothing below needs to be set. To change a default, either:

  • edit ~/.grok-web-mcp/config.json (run grok-web-mcp --init once to create it with every key), or

  • set an environment variable GROK_WEB_MCP_<KEY> (for example GROK_WEB_MCP_DEFAULT_ASPECT=9:16), which wins over the file.

Check what is in effect with grok-web-mcp --config or the grok_settings tool. Settings are read when the server starts, so restart your MCP client after a change.

Key

Default

What it does

output_dir

~/grok-web-mcp

Folder that relative out_dir / image_path values resolve against.

default_aspect

16:9

Aspect ratio when a call does not give one (16:9, 9:16, 1:1, 2:3, 3:2).

default_mode

""

speed or quality when a call does not give one; "" leaves the page as it is.

default_n

1

Images to keep per call when a call does not give n (1–4).

image_timeout_s

180

Seconds to wait for an image submission.

video_timeout_s

420

Seconds to wait for a video.

quota_guard

true

Refuse jobs over the daily limits in limits.json. Usage is still recorded when off.

pin_extension

true

Trust only the first Chrome extension id that connects.

extension_ids

[]

Extension ids always allowed (env: comma-separated).

require_peer_token

true

Require the local peer token (see below).

port

8799

Local WebSocket port; set the same port in the extension popup.

GROK_WEB_MCP_HOME (default ~/.grok-web-mcp) moves the whole settings folder. Example for Claude Code:

claude mcp add -s user grok-web -e GROK_WEB_MCP_DEFAULT_ASPECT=9:16 -e GROK_WEB_MCP_DEFAULT_MODE=quality \
  -- uvx --from git+https://github.com/h4775346/grok-web-mcp grok-web-mcp

In JSON configs, put the same variables in an "env": { ... } block.

Do I need to do anything with a token?

No. You never copy, paste or type a token, and the Chrome extension does not use one.

Here is why it exists. Each MCP client window starts its own copy of the server. Only the first copy can listen on the port and talk to Chrome; the others send their jobs to it over the local socket, so all your windows share one queue and one daily budget. Something has to prove that such a connection really comes from another copy of grok-web-mcp and not from some other program on your computer trying to spend your Grok quota. That proof is a random token that the first copy writes to ~/.grok-web-mcp/token.txt and every copy reads by itself.

It is optional. If you only ever run one MCP client, or you trust every program on your computer, set require_peer_token to false and no token file is created or checked. Web pages stay blocked and the extension pin still applies either way.

Security

  • The WebSocket listens on 127.0.0.1 only (not configurable).

  • Connections from web pages are always refused (any http(s):// Origin), so a site you visit cannot drive your Grok account.

  • Only a real chrome-extension:// origin can act as the extension, and by default only the first extension id that connects (pinned in ~/.grok-web-mcp/extensions.json). Reinstalled from a different folder? Edit that file, add the id to extension_ids, or turn pin_extension off.

  • A second MCP session proves itself with the local peer token (automatic; optional, see above).

  • The extension only has access to https://grok.com/*. It does not read or send your password or cookies anywhere; it works inside the page you are already logged into, and results go only to the local server.

See SECURITY.md to report a vulnerability.

Troubleshooting

Message

Fix

no extension connected

Chrome is closed, or the extension is not loaded. Open Chrome; the badge should say on.

Badge says off

Your MCP client is not running the server, or the ports differ. Check grok_status and the popup's port.

Badge says not allowed

Another extension id was pinned first. Edit ~/.grok-web-mcp/extensions.json or set pin_extension to false.

bad token from a second session

Two sessions use different GROK_WEB_MCP_HOME folders. Point them at the same one, or set require_peer_token to false.

invalid setting: ... at start

A value in config.json or a GROK_WEB_MCP_* variable is wrong; grok-web-mcp --config shows which.

not_logged_in

Log in at grok.com in that Chrome profile.

timeout: no images appeared

The prompt was moderated, you hit Grok's rate limit, or Grok changed its page.

Jobs are slow when the tab is hidden

Keep Bring the grok tab to front on in the popup (Chrome throttles hidden tabs).

Grok's web UI changes from time to time. The selectors live in extension/content/main.js; if something breaks, please open an issue or send a PR.

Development

git clone https://github.com/h4775346/grok-web-mcp && cd grok-web-mcp
uv sync --extra dev
uv run pytest        # end-to-end test with a fake extension: no Chrome, no grok.com, no quota used
uv run ruff check .

See CONTRIBUTING.md.

Disclaimer

This is an independent open-source project. It is not affiliated with, endorsed by or sponsored by xAI. "Grok" and "Grok Imagine" are trademarks of their owners. The extension automates the grok.com page in your own browser session on your behalf; you are responsible for using it within grok.com's terms of service and your plan's limits.

License

MIT


Available Tools

7 tools
grok_batchGenerate a batch of imagesA

Run several image jobs one after another. Each job: {"prompt", "name", "aspect"?, "n"? (1..4, default 1), "mode"?, "max_side"?, "size"?, "keep_original"?, "timeout_s"?, "out_dir"?}. The whole batch is checked first (job count, total submissions vs today's budget); nothing runs if it does not fit. Batches needing more than confirm_over submissions need confirm=true (ask the user first). Returns {"results": [...], "submissions_planned", "usage"}; a failed job gets an "error" and the batch goes on, except budget/no-extension errors, which stop it and mark the rest "skipped".

NameRequiredDescriptionDefault
jobsYes
confirmNo
out_dirNo

TDQS

A4/5.0
Behavior5/5

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

Beyond the annotations (which only declare it writes, is open-world and non-idempotent), the description discloses the up-front validation pass, the all-or-nothing semantics when the batch doesn't fit, the human-confirmation gate, and precise partial-failure behavior including which error classes stop the batch and mark remaining jobs "skipped". That is exactly the non-obvious behavior an agent needs.

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?

Dense and front-loaded: what it does, the job shape, the validation/confirm rule, then the return contract and failure semantics in order of need. The embedded JSON snippet wraps awkwardly mid-line, but no sentence is padding.

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 batch mutation tool with no output schema and an untyped `jobs` array, the description supplies the job structure, the return keys ("results", "submissions_planned", "usage"), and failure handling. What "submissions" or "today's budget" mean in units is left to grok_usage, 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?

With 0% schema description coverage, the description carries the load and does: it enumerates the full job object shape including bounds and defaults (`n` 1..4 default 1) and lists all optional keys. The only gap is the top-level `out_dir`, which is only implied via the identically named job-level field, and `confirm_over` is referenced but not shown as a parameter.

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 first sentence gives a specific verb and resource — "Run several image jobs one after another" — which clearly distinguishes it as the batch counterpart to grok_generate_image. It doesn't explicitly name the single-image sibling as the alternative, but the batch framing makes the split obvious.

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 gives concrete conditions for the `confirm` flag ("ask the user first" above `confirm_over` submissions) and explains that budget/no-extension errors halt the batch. It never states outright when to prefer grok_generate_image over this one, nor the preconditions for a job to be accepted beyond the fit check.

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

grok_generate_imageGenerate images with Grok ImagineA

Generate images with Grok Imagine in the user's logged-in Chrome (no API key; uses the user's own Grok plan and daily quota: see grok_usage(); jobs over the limits are refused).

Omitted aspect / n / mode / timeout_s use the configured defaults (see grok_settings). aspect: 16:9 | 9:16 | 1:1 | 2:3 | 3:2. n: images to keep, 1..4 (one submission gives 2; n=3/4 = 2 submissions). mode: "speed" | "quality" (a warning, not a failure, if the page control is not found). max_side: shrink saved files so the long side <= max_side (e.g. 1344). size: exact "WxH" (e.g. "1344x768"), scale to cover + center crop (overrides max_side). keep_original: also keep _orig.. out_dir: absolute, or relative to the output root (GROK_WEB_MCP_OUTPUT_DIR, default ~/grok-web-mcp). Files are _1.jpg, _2.jpg ... (never overwritten). Returns {"files", "kept", "generated", "submissions", "aspect_ok", "secs", "sizes"?, "warning"?}.

NameRequiredDescriptionDefault
nNo
modeNo
nameNo
sizeNo
aspectNo
promptYes
out_dirNo
max_sideNo
timeout_sNo
keep_originalNo

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already flag non-readonly, non-idempotent, open-world behavior; the description adds substantial value beyond them: it discloses auth model (browser session, no API key), quota-enforcement refusal, that missing page controls yield a warning rather than failure, and that output files are never overwritten. That is exactly the behavioral context an agent needs before spending the user's quota.

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?

Dense but front-loaded: environment/auth context first, then parameter rules, then file naming and return shape. Nearly every clause earns its place, though the parameter block reads as a run-on list and could be marginally tighter.

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?

With no output schema, the description correctly documents the return object keys (files, kept, generated, submissions, aspect_ok, secs, sizes, warning) and the on-disk naming convention. Combined with defaults and quota behavior, an agent has everything needed to invoke and interpret results.

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% with 10 parameters, so the description carries the full burden and does: enumerates aspect ratios, n's 1..4 range and the 2-images-per-submission mechanic, mode values, max_side semantics, size's exact WxH with cover+crop behavior and override relationship, keep_original, and out_dir resolution. It also names which parameters fall back to grok_settings defaults.

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 and resource (generate images with Grok Imagine) plus the execution context (user's logged-in Chrome, no API key). This clearly separates it from grok_generate_video and the other sibling tools like grok_usage/grok_settings.

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?

Gives operational context: quota-backed via the user's own plan, jobs over limits are refused, and points to grok_usage() and grok_settings for limits/defaults. It does not explicitly say when to prefer grok_generate_image over grok_batch or grok_generate_video, so it stops short of full alternatives routing.

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

grok_generate_videoGenerate a video with Grok Imagine (experimental)A

EXPERIMENTAL: make a Grok Imagine video (about 6 s) from a prompt, optionally animating a local image (image_path: jpg/png/webp). Videos cost much more quota than images and are capped by max_videos_per_day (see grok_usage). Relies on Grok's current web UI, which changes often. Returns {"files": [mp4 path]}.

NameRequiredDescriptionDefault
nameNo
aspectNo
promptYes
out_dirNo
timeout_sNo
image_pathNo

TDQS

A4.4/5.0
Behavior5/5

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

Goes well beyond the annotations (readOnly=false, openWorld=true, non-idempotent): it warns the tool depends on a frequently-changing web UI, flags the quota cost relative to images, notes the daily cap, and discloses the return shape. That is exactly the operational risk context the annotations cannot convey.

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?

Five dense sentences, front-loaded with the EXPERIMENTAL warning and cost caveat; no filler, and the return shape is compressed to a single fragment.

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 6-param mutation tool with no output schema and no annotations on cost, the description covers output shape, quota risk, and fragility. It falls short only on the undocumented optional parameters (notably aspect and timeout behavior), which an agent may need before invoking.

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 carries the burden; it explains prompt and image_path (with accepted formats jpg/png/webp) and hints at output via 'mp4 path'. However, name, aspect, out_dir, and timeout_s get no meaning at all, and 'aspect' is genuinely consequential for video generation, so compensation is only partial.

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 ('make a Grok Imagine video'), adds duration (~6 s) and an optional image-to-video mode, which distinguishes it from the sibling grok_generate_image. An agent can tell exactly what this produces 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?

Sets clear context: experimental, costly in quota, capped by max_videos_per_day, and routes the agent to grok_usage for limits. It does not explicitly say 'use grok_generate_image for stills instead', so the alternative-routing is implied rather than stated.

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

grok_set_limitsChange daily limitsB
Idempotent

Change the daily Grok quota guard (only when the user asked for it). Omitted values stay as they are.

NameRequiredDescriptionDefault
confirm_overNo
max_jobs_per_batchNo
max_videos_per_dayNo
max_image_submissions_per_dayNo

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare the mutation as idempotent, non-destructive, and closed-world, so the description does not need to repeat safety basics. It adds the important partial-update behavior ('omitted values stay as they are'), but does not cover validation, authorization, or what happens when limits are lowered or raised.

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 a single tight sentence with the key condition and the partial-update rule front-loaded. There is no filler or repetition.

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?

For a four-parameter mutation tool with no parameter descriptions and no output schema, the definition is too sparse. Annotations cover safety traits, but an agent still lacks enough detail about the parameters and the effects of changing daily limits.

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 carry parameter meaning. It only explains that omitted values remain unchanged, and never clarifies what confirm_over means or how the three max_* limits should be interpreted.

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 verb (Change) and resource (daily Grok quota guard), making the tool's purpose clear. It does not explicitly differentiate itself from siblings such as grok_settings or grok_usage, but the limits focus is reasonably distinct.

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 gives a useful condition ('only when the user asked for it'), but does not name alternatives, explain when not to use it, or relate it to grok_settings/grok_status. The guidance is implied rather than fully explicit.

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

grok_settingsSettings in effectA
Read-onlyIdempotent

The settings in effect (defaults < config.json < GROK_WEB_MCP_* env vars), where each came from, and what each one does. Settings are read when the server starts; restart the MCP client after changing them.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety is covered. The description adds genuine context beyond that: the precedence order (defaults < config.json < env vars), the fact that values are read at server start, and the operational consequence that a client restart is needed after changes.

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 compact sentences, zero filler, with the precedence rule front-loaded and the operational caveat placed last where it belongs. Every clause carries information an agent would otherwise have to guess.

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 no output schema, the description does the necessary work by stating that the result includes effective values, their sources, and per-setting descriptions. That is sufficient to call and interpret the tool; only the exact output shape is left unspecified, which is a minor gap.

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 tool takes zero parameters, so the baseline is 4; there is nothing for the description to disambiguate and it correctly does not invent any arguments.

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 gives a specific resource and scope: the settings currently in effect, plus each value's origin and meaning. It is clearly a read/inspection tool, though it never names or contrasts itself with siblings such as grok_status, which likely overlaps in reporting server state.

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?

Usage is implied rather than stated: an agent gathers this is for inspecting configuration, and the note about restarting the MCP client implies this is a diagnostic/verification step. There is no explicit 'use this instead of X' guidance against grok_status or grok_set_limits, which matters given the sibling list.

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

grok_statusBridge statusA
Read-onlyIdempotent

Bridge health: is the Chrome extension connected, is a grok.com/imagine tab open, is the user logged in.

NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is fully covered by structured data. The description adds real value beyond that by disclosing the exact diagnostic dimensions being probed (extension connectivity, tab presence, login state), which tells the agent what a failure would mean. It does not describe the shape of the response (booleans vs. a status string), which keeps it from a 5.

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?

A single front-loaded sentence that labels the category ('Bridge health') and then enumerates the checks. No filler, no restatement of the title, nothing that could be cut.

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 zero-parameter, read-only, idempotent diagnostic with no output schema, an agent needs only to know what is being checked and that it is safe to call repeatedly — both are supplied. The absence of return-format detail is a small gap, but nothing required to invoke the tool correctly is missing.

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 tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a no-param tool is 4. Schema coverage is 100% and the empty object schema is unambiguous.

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 names the resource (the bridge / Chrome-extension connection to grok.com) and enumerates the three concrete conditions it reports on: extension connected, imagine tab open, user logged in. That is far more specific than the bare name or the 'Bridge status' title, so an agent knows exactly what question this tool answers. It stops short of explicitly contrasting itself with siblings such as grok_usage or grok_settings, so it lands at 4 rather than 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?

Usage is only implied: an agent can infer this is a pre-flight/health check to run before grok_generate_image, grok_batch, or grok_generate_video, but the description never says 'call this first' or 'use this to diagnose failures.' There are no stated exclusions or named alternatives, so the routing decision is left to inference.

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

grok_usageToday's usage and limitsA
Read-onlyIdempotent

Today's Grok Imagine usage (image submissions, images generated/kept, videos) against the daily limits.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is fully covered. The description adds genuinely new context the annotations lack: the temporal scope is limited to 'today' and the tally is broken down into specific counters (submissions, generated, kept, videos). It does not discuss refresh cadence or reset timing, which keeps it below 5.

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?

A single sentence with the scope ('today's') front-loaded and zero filler. Every clause carries information about what is measured.

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 no-argument, read-only usage snapshot with rich annotations there is little else needed. The description covers what is counted and the time window. Lacking an output schema, it could have sketched the returned fields or the limit/reset shape, which is the only real gap.

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 tool takes zero parameters, so the baseline is 4. The description correctly does not invent argument semantics and instead spends its words on what the no-argument snapshot returns.

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 names the specific resource (today's Grok Imagine usage) and enumerates the exact metrics counted: image submissions, images generated/kept, videos, measured against daily limits. That is far more precise than a name restatement and separates it from grok_set_limits and grok_status. It stops short of explicitly naming a sibling, keeping it at 4.

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?

Reading the description makes the intended use (check today's consumption versus caps before submitting more work) reasonably obvious, especially next to grok_set_limits. However, there is no explicit when-to-use statement, no mention of the sibling that changes limits, and no prerequisites or exclusion guidance.

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. 7 tool updatesv0.1.0
    • First observedgrok_batch
    • First observedgrok_generate_image
    • First observedgrok_generate_video
    • First observedgrok_set_limits
    • First observedgrok_settings
    • First observedgrok_status
    • First observedgrok_usage

TDQS

A3.9/5.0

Scored across 7 tools

Disambiguation5/5

Each tool targets a clearly distinct purpose: health/status, settings, usage, quota limits, single image generation, batch generation, and video generation. The only potential overlap is between grok_generate_image and grok_batch, but the batch tool is explicitly scoped to multiple jobs and the single tool remains the obvious choice for one job.

Naming Consistency4/5

All tools use the same grok_ prefix and snake_case, which makes the set predictable and easy to scan. The pattern is mostly consistent, though some names are noun-style status/settings/usage tools while others are verb_noun operations, so it falls slightly short of a pure verb_noun convention.

Tool Count5/5

Seven tools is well-scoped for this server. Each tool covers a distinct part of the workflow: checking health, reading configuration, monitoring usage, changing limits, and generating images, batches, or videos.

Completeness4/5

The surface covers the core lifecycle well: status, settings, usage, quota limits, single image generation, batch generation, and experimental video generation. Minor gaps exist around canceling in-flight jobs or listing generated output history, but these are workaroundable and not central to the stated purpose.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers