Grok Web MCP
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 Claude, Cursor, VS Code or any MCP client, 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 |
Related MCP server: Grok Image Generation MCP Server
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.
🔁 Multi-session: open five Claude Code 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 client
claude mcp add -s user grok-web -- uvx --from git+https://github.com/h4775346/grok-web-mcp grok-web-mcpEdit claude_desktop_config.json (Settings → Developer → Edit config):
{
"mcpServers": {
"grok-web": {
"command": "uvx",
"args": ["--from", "git+https://github.com/h4775346/grok-web-mcp", "grok-web-mcp"]
}
}
}~/.cursor/mcp.json:
{
"mcpServers": {
"grok-web": {
"command": "uvx",
"args": ["--from", "git+https://github.com/h4775346/grok-web-mcp", "grok-web-mcp"]
}
}
}.vscode/mcp.json:
{
"servers": {
"grok-web": {
"type": "stdio",
"command": "uvx",
"args": ["--from", "git+https://github.com/h4775346/grok-web-mcp", "grok-web-mcp"]
}
}
}Any client that runs stdio MCP servers works. The command is:
uvx --from git+https://github.com/h4775346/grok-web-mcp grok-web-mcp2. 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_batchA
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?
With no annotations, the description carries the full burden and does so unusually well: all-or-nothing pre-validation against today's budget, per-job error isolation with batch continuation, and the exception class (budget/no-extension) that halts the run and marks remaining jobs 'skipped'. That is exactly the failure-mode detail an agent needs before spending budget.
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?
Front-loaded with the core action, then preconditions, then return/failure semantics — a sensible ordering with no filler. The inline job-object spec is dense and hurts readability slightly, but every line carries information.
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?
No output schema exists, and the description compensates by describing the return shape and skipped/error semantics. But several documented job fields (mode, size, max_side, keep_original, name) are named without any meaning, and `confirm_over` is never sourced — significant gaps for a zero-coverage nested schema on a costly generation 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?
Schema coverage is 0% and `jobs` is an untyped array of free-form objects, so the description does the schema's job by enumerating job keys (prompt, name, aspect, n 1..4 default 1, mode, max_side, size, keep_original, timeout_s, out_dir). It loses a point for leaving `confirm_over` as a dangling reference not defined here, and for not distinguishing top-level `out_dir` from the per-job `out_dir`.
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: running several image jobs sequentially as a single batch. It is clearly distinguishable in intent from grok_generate_image (single job), though it never names the sibling or explicitly contrasts with looping the single-job tool.
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 by the batch framing and the description gives real operational preconditions (whole batch validated first, confirm=true required above `confirm_over` submissions, ask the user first). However, it never states when to prefer this over calling grok_generate_image repeatedly, nor any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
grok_generate_imageA
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?
With no annotations, the description carries the full burden and does so: it discloses that a missing page control in quality mode yields a warning rather than a failure, that files are never overwritten, that n=3/4 costs two submissions, and where files land. It also enumerates the return keys, so the agent knows what success and partial success look like.
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?
Purpose and quota constraint are front-loaded, then parameters are covered in a terse, scannable per-parameter list. For a 10-parameter tool with no schema descriptions, every line carries information; nothing 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?
No output schema exists, and the description compensates by listing the return keys and the optional sizes/warning fields. Combined with the quota, overwrite, and default-behavior notes, an agent can call this correctly; only timeout_s semantics and explicit error (as opposed to warning) behavior are left unaddressed.
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% for 10 parameters, so the description must compensate, and it explains most of them: aspect enum values, n range and its submission cost, mode values and failure semantics, max_side, size (with an explicit precedence rule over max_side), keep_original, and out_dir resolution. Gaps remain for timeout_s (only covered by the generic "configured defaults" remark) and name, which is explained only obliquely through the file-naming pattern.
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 names a specific verb and resource ("Generate images with Grok Imagine") plus the execution mechanism (user's logged-in Chrome, no API key), which is far more than a restatement of the name. It implicitly separates itself from grok_generate_video by naming the medium, but never explicitly routes the agent away from siblings such as grok_batch.
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 prerequisites and guardrails: quota is drawn from the user's own Grok plan, over-limit jobs are refused, and the agent is pointed at grok_usage() and grok_settings for limits and defaults. It stops short of stating when to prefer grok_batch or what to do on refusal (retry later vs. reduce n).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
grok_generate_videoA
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?
With no annotations, the description carries the full burden and does well: it discloses the experimental/fragile nature (Grok's web UI changes often), the quota cost and daily cap, and the return shape. It omits whether the call blocks, how timeout_s behaves, or failure modes, keeping it below 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?
Dense and front-loaded: the EXPERIMENTAL warning leads, then capability, then cost/cap caveats, then return format. Nearly every sentence earns its place; minor length comes from the parenthetical file-format note.
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?
Return shape is given despite no output schema, and the cost fragility is covered. However, four of six parameters remain unexplained, which for a tool with this much quota risk is a meaningful gap in what an agent needs before calling.
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% across 6 parameters, so the description must compensate — yet it only explains prompt and image_path (with accepted formats). name, aspect, out_dir, and timeout_s are left entirely undocumented in both schema and description.
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 ('make a Grok Imagine video ... from a prompt'), gives the output duration (~6 s), and describes an optional image-animation mode. An agent can distinguish this from grok_generate_image without opening either 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?
Explicitly flags the tool as EXPERIMENTAL, warns that videos cost much more quota than images, and points to grok_usage / max_videos_per_day for caps. It doesn't say 'prefer grok_generate_image for stills', but the cost comparison effectively routes the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
grok_set_limitsB
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?
With no annotations, the description carries the full burden. It usefully discloses partial-update semantics ('Omitted values stay as they are'), which is real behavioral value for a mutation tool. It says nothing about permissions, reversibility, validation ranges, or how an explicit null differs from omission — a meaningful ambiguity given every parameter is nullable.
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 short clauses, front-loaded with the action and its guard condition; every sentence earns its place. Minor loss for the undefined 'quota guard' term occupying the prime position.
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 mutation tool with no annotations, four entirely undocumented parameters, and no output schema, the description is far too thin. An agent cannot infer valid ranges, the meaning of confirm_over, or the result of the call.
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 compensate and it does not: confirm_over, max_jobs_per_batch, max_videos_per_day, and max_image_submissions_per_day are never explained. The one semantic hint it gives ('Omitted values stay as they are') actually leaves the null-vs-omitted distinction unresolved rather than clarifying it.
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 ('Change') and resource ('daily Grok quota guard'), which distinguishes it from read-only siblings like grok_status, grok_usage, and grok_settings. However, 'quota guard' is vague and never maps to the four concrete limit fields the schema exposes.
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?
Explicitly constrains invocation with '(only when the user asked for it)', which is a clear when-to-use gate. It does not name an alternative tool, but no sibling performs the same mutation, so the routing risk is low.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
grok_settingsA
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?
With no annotations, the description carries the full burden and discloses important behavior: precedence order (defaults < config.json < environment variables), provenance reporting, and that settings are read only at server startup. It does not explicitly state that the tool is read-only, but the introspection framing makes that clear enough.
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 sentences, front-loaded with what the tool reports and followed by the key lifecycle caveat. Every sentence earns its place with no redundant or filler text.
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, parameterless introspection tool with no output schema, the description explains both the returned content and the startup/restart behavior. It could be more complete by explicitly routing the agent away from grok_set_limits or grok_status, but the core information is present.
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, which establishes a baseline of 4. The description correctly does not invent parameter semantics where none exist.
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 identifies the resource and returned content: current settings, their precedence sources, and what each setting does. It lacks an explicit verb like 'returns' and does not name or distinguish itself from related siblings such as grok_set_limits or grok_status.
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 by the purpose: inspect current settings and their provenance. The note that settings are read at server startup and require an MCP client restart after changes adds operational context, but there is no explicit when-to-use guidance or comparison to alternatives like grok_set_limits.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
grok_statusA
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?
No annotations are provided, so the description carries the burden; it does disclose what is inspected (extension, tab, auth state), implying a read-only probe, but says nothing about cost, latency, or whether it can have side effects such as opening a tab.
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 naming the subject and then the three checks; 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?
With no output schema, the description must convey what comes back, and it does by listing the three status questions. What's missing is the return shape (booleans vs. messages) and any recommended follow-up on failure.
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?
Zero parameters and 100% schema coverage, so there is nothing for the description to disambiguate; baseline 4 applies.
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 resource (bridge health) and enumerates the concrete conditions it checks: Chrome extension connection, grok.com/imagine tab, and login state. This distinguishes it from generation/settings siblings, though it never explicitly frames itself as a diagnostic/preflight check.
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 preflight diagnostic to run before grok_generate_image or grok_batch, but no when-to-use or when-not-to-use guidance is stated, nor is any sibling named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
grok_usageA
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?
No annotations are provided, so the description must carry the behavioral burden. 'Today's ... usage ... against the daily limits' establishes a read-only, day-scoped snapshot with no mutation, but it does not explicitly state that nothing is modified, does not mention rate limits, permissions, or whether the window resets at a specific time.
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 compact sentence, front-loaded with the resource and followed by the exact metric list, with zero filler. The parenthetical enumeration is dense but readable.
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 query with no output schema, the description does the work the schema cannot: it enumerates the returned fields (image submissions, images generated/kept, videos) and the comparison basis (daily limits). Only the exact return shape and reset semantics remain unspecified, which is minor here.
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 to document; the schema is empty and the description correctly adds no parameter claims. Baseline 4 applies for a parameterless tool.
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 (Grok Imagine usage) and enumerates the metrics reported: image submissions, images generated/kept, and videos, all measured against daily limits. It is clearly a read-only quota-report tool, distinguishable in substance from grok_set_limits, though it never names that sibling explicitly.
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 – the 'against the daily limits' framing suggests checking quota before calling grok_generate_image or grok_generate_video, but the description never says when to use this versus grok_status or grok_settings, and offers no exclusions.
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 has a clearly distinct purpose: status (health), settings (configuration), usage (today's quota), set_limits (quota changes), and three separate generation entry points (single image, batch, video). The descriptions make the boundaries explicit, including read-vs-write and single-vs-batch distinctions.
All tools use a consistent `grok_` prefix with snake_case suffixes. Action tools use verb phrases (`generate_image`, `set_limits`) while state/query tools use nouns (`status`, `settings`, `usage`), which is predictable and readable.
Seven tools is well-scoped for a Grok web bridge: generation, batch generation, video generation, quota inspection, quota modification, health status, and configuration. No tool feels redundant or missing at the surface level.
The surface covers the core lifecycle: generate images/videos, batch jobs, inspect usage, adjust quota, and check bridge health/settings. Minor gaps exist around job cancellation, output file listing/cleanup, or history beyond today, but core workflows are covered.
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.515 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 gradedqualityBmaintenanceEnables 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