Grok Web MCP
Generate Grok Imagine images and videos from any MCP-capable AI agent using your own logged-in grok.com Chrome session — no xAI API key.
Generate images (
grok_generate_image): prompt-driven images with aspect ratio (16:9, 9:16, 1:1, 2:3, 3:2), speed/quality mode, 1–4 images per call, exact sizes viasizeormax_side, custom name/output folder, optional original retention.Run batches (
grok_batch): execute up to a dozen image jobs in order, pre-validated and priced against today's quota before anything is submitted; large batches requireconfirm=true.Generate video (
grok_generate_video, experimental): ~6 s clips from a text prompt or by animating a local image.Check health (
grok_status): whether the Chrome extension is connected, a grok.com/imagine tab is open, and the user is logged in.Track usage (
grok_usage): today's image submissions, images kept/generated, and videos versus daily limits.Adjust quota (
grok_set_limits): change daily caps on image submissions, videos, batch size, and the confirmation threshold.Inspect settings (
grok_settings): view effective configuration, each value's source, and what it does.Share one queue across multiple agent sessions, with loopback-only, web-page-blocked, extension-pinned local security.
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., "@Grok Web MCPmake two 9:16 images of a neon Tokyo street at night, quality mode"
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.
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.
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), ormax_sideto 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/--ssefor 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.jsonor 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-mcpOne-click install:
Agent | How to add it |
Claude Code |
|
OpenAI Codex CLI |
|
Gemini CLI | JSON below in |
VS Code (Copilot) | button above, or |
Cursor | button above, or the JSON below in |
Claude Desktop | JSON below in |
Windsurf | JSON below in |
Cline | MCP Servers → Configure → JSON below in |
Roo Code / Kilo Code | JSON below in |
Kiro | JSON below in |
Amazon Q Developer CLI | JSON below in |
JetBrains AI Assistant / Junie | Settings → Tools → AI Assistant → MCP → Add → paste the JSON below |
LM Studio | Program → Install → Edit |
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/sseAny 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: 600in Goose or"timeout": 600000in Cline).
2. Load the Chrome extension
Download
grok-web-mcp-extension.zipfrom the latest release and unzip it, or use theextension/folder of a clone.Open
chrome://extensions, switch on Developer mode, click Load unpacked and pick the folder.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 |
|
|
| A list of image jobs run in order. Refused up front if it does not fit today's budget; jobs over |
| Experimental. |
| Is the extension connected, is a grok tab open, are you logged in. |
| Today's submissions, images and videos against your limits. |
| Change the daily limits (the agent is told to ask you first). |
| 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(rungrok-web-mcp --initonce to create it with every key), orset an environment variable
GROK_WEB_MCP_<KEY>(for exampleGROK_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 |
|
| Folder that relative |
|
| Aspect ratio when a call does not give one ( |
|
|
|
|
| Images to keep per call when a call does not give |
|
| Seconds to wait for an image submission. |
|
| Seconds to wait for a video. |
|
| Refuse jobs over the daily limits in |
|
| Trust only the first Chrome extension id that connects. |
|
| Extension ids always allowed (env: comma-separated). |
|
| Require the local peer token (see below). |
|
| 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-mcpIn 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 toextension_ids, or turnpin_extensionoff.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 |
| 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 |
Badge says not allowed | Another extension id was pinned first. Edit |
| Two sessions use different |
| A value in |
| Log in at grok.com in that Chrome profile. |
| 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
Available Tools
7 toolsgrok_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".
| Name | Required | Description | Default |
|---|---|---|---|
| jobs | Yes | ||
| confirm | No | ||
| out_dir | No |
TDQS
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.
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.
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.
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.
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.
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"?}.
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | ||
| mode | No | ||
| name | No | ||
| size | No | ||
| aspect | No | ||
| prompt | Yes | ||
| out_dir | No | ||
| max_side | No | ||
| timeout_s | No | ||
| keep_original | No |
TDQS
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.
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.
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.
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.
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.
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]}.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| aspect | No | ||
| prompt | Yes | ||
| out_dir | No | ||
| timeout_s | No | ||
| image_path | No |
TDQS
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.
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.
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.
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.
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.
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 limitsBIdempotent
Change the daily Grok quota guard (only when the user asked for it). Omitted values stay as they are.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm_over | No | ||
| max_jobs_per_batch | No | ||
| max_videos_per_day | No | ||
| max_image_submissions_per_day | No |
TDQS
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.
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.
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.
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.
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.
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 effectARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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 statusARead-onlyIdempotent
Bridge health: is the Chrome extension connected, is a grok.com/imagine tab open, is the user logged in.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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 limitsARead-onlyIdempotent
Today's Grok Imagine usage (image submissions, images generated/kept, videos) against the daily limits.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
7 tool updates
v0.1.0- First observed
grok_batch - First observed
grok_generate_image - First observed
grok_generate_video - First observed
grok_set_limits - First observed
grok_settings - First observed
grok_status - First observed
grok_usage
TDQS
Scored across 7 tools
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.
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.
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.
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
Related MCP Connectors
Generate AI images, videos, music, SFX & speech in any AI assistant. Results appear inline in chat.
Generate AI images, video, voiceovers and music from Claude, ChatGPT or Cursor through 50+ models (Veo 3.1, Kling 3, Seedance, Nano Banana, GPT Image, ElevenLabs). Also image editing, upscaling, background removal, face swap, transcription, voice cloning and UGC-style video ads. Sign in with OAuth — no API key to paste. Tools are annotated (read-only vs. credit-spending); failed generations are refunded.
Generate images from Claude, ChatGPT, Cursor and Codex with 12 top AI image models. Up to 4 images per call, SVG vectorization, background removal, upscaling and image-to-video. Remote MCP with OAuth, no API keys.
LLM chat, text tools, image generation, editing, batch image jobs, and asynchronous video generation
Related MCP Servers
- AlicenseAqualityDmaintenanceIntegrates xAI's Grok APIs into Claude Code to enable image and video generation, real-time web searches, and multi-modal image analysis. It provides a suite of tools for interacting with Grok models directly through natural language prompts during a Claude session.542 npm1MIT
- FlicenseNot gradedqualityFmaintenanceEnables AI assistants to generate images via Grok Imagine by automating the web interface through a Chrome extension bridge.1-
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to generate text, images, and videos via Grok's web UI using MCP tools (grok_chat, grok_generate_image, grok_generate_video) without an API key.MIT
- AlicenseNot gradedqualityCmaintenanceEnables image generation and editing via the Grok Imagine Image 2.0 API, supporting text-to-image, image-to-image editing, multi-reference generation, local uploads, and asynchronous job polling.7MIT