Skip to main content
Glama

GrokMCP

PyPI version Python License: MIT

A Model Context Protocol (MCP) server for Grok (xAI) — chat/reasoning/vision and Grok Imagine video generation, powered by the AceDataCloud API.

Chat with Grok models, or generate short AI videos from a text prompt or a still image — directly from any MCP-compatible client (Claude Desktop, Claude Code, Cursor, etc.).

Features

  • Chat / Reasoning / Vision — Talk to Grok 4.5 / Grok 4 / Grok 3 models, with image input and tool calling

  • Text to Video — Generate a video clip from a text description

  • Image to Video — Animate a reference image into a video

  • Async task tracking — Submit a job, poll for the result, single or batch

  • stdio & HTTP transports — Local stdio for desktop clients, HTTP for remote hosting

Related MCP server: xbridge-mcp

Tools

Tool

Description

grok_chat_completions

Chat completion (reasoning / vision / tool calling) with Grok chat models.

grok_text_to_video

Generate a video from a text prompt (any model except grok-imagine-video-1.5:official).

grok_image_to_video

Generate a video from an input image (+ optional motion prompt).

grok_get_task

Query the status/result of a single generation task.

grok_get_tasks_batch

Query the status/result of multiple tasks at once.

grok_list_models

List available models and their capabilities.

grok_list_actions

List all tools and example workflows.

grok_get_prompt_guide

Tips for writing effective video prompts.

Models

Chat (grok_chat_completions)

Model

Notes

grok-4.5

Default — latest flagship reasoning model

grok-4

Previous flagship reasoning model

grok-3

Earlier-generation model

Video

Model

Text→Video

Image→Video

Notes

grok-imagine-video-1.5-fast:reverse

✅

✅

Default. Fastest & cheapest. 6-30s, duration-banded billing.

grok-imagine-video:reverse

✅

✅

Standard. 1-15s, billed per output second.

grok-imagine-video:official

✅

✅

Official endpoint, higher fidelity. 1-15s, per second.

grok-imagine-video-1.5:official

❌

✅

Official image-to-video only (requires image_url). Up to 1080p, per second.

Parameters

Parameter

Applies to

Values

prompt

both

Text description (required for text-to-video)

image_url

image-to-video

Input image URL (required for -1.5-preview)

reference_image_urls

image-to-video

Optional list of style/content reference images

aspect_ratio

both

1:1, 16:9 (default), 9:16, 4:3, 3:4, 3:2, 2:3

resolution

both

480p (default), 720p, 1080p

duration

both

grok-imagine-video-1.5-fast:reverse: 6–30s; other models: 1–15s (default 6)

callback_url

both

Optional async webhook

Connect: hosted OAuth, API token, or local stdio

The hosted endpoint is https://grok.mcp.acedata.cloud/mcp. Choose one route for the MCP client:

Route

When to use it

Credential setup

Hosted OAuth

The client supports remote MCP OAuth

Add only the URL, then sign in to AceDataCloud and approve access. No token needs to be pasted into client configuration.

Hosted API token

The client cannot finish OAuth, or you need an explicit integration credential

Send an AceDataCloud API token in the Authorization: Bearer … header. Keep it in a local secret store or environment variable.

Local stdio

The client runs a local MCP process

Install mcp-grok and pass ACEDATACLOUD_API_TOKEN to that process. It still calls the AceDataCloud API.

The hosted service advertises OAuth metadata and Dynamic Client Registration (DCR). DCR registers the client application; it is not an API key. OAuth signs you in and the client sends the resulting Bearer token; it may reuse or create an API credential for the account. Browser sign-in still requires an AceDataCloud account. The hosted service can be metered: review current service documentation and displayed pricing before a real operation. Do not configure both an OAuth login and a fixed Authorization header for the same server.

Hosted OAuth examples

  • Claude and Claude Desktop chat: Add a remote custom connector in Customize → Connectors → Add custom connector, enter https://grok.mcp.acedata.cloud/mcp, select sign-in, and choose Register automatically if Claude asks how to register its OAuth client. Complete consent. Claude Desktop's local claude_desktop_config.json is a separate setup. Claude connector guide.

  • Claude Code: claude mcp add --transport http --scope user grok https://grok.mcp.acedata.cloud/mcp, then claude mcp login grok. Check /mcp. Claude Code MCP guide.

  • Cursor: Add a remote server with only https://grok.mcp.acedata.cloud/mcp. For a project, merge the entry below into <project>/.cursor/mcp.json; for personal use, use ~/.cursor/mcp.json. Cursor MCP guide.

  • VS Code / Copilot: Run MCP: Add Server, select HTTP, enter https://grok.mcp.acedata.cloud/mcp, then finish the browser sign-in. New portable workspace configs use <project>/.mcp.json; the VS Code-specific format below uses <project>/.vscode/mcp.json or the user profile. Check MCP: List Servers. VS Code MCP setup.

  • Codex: codex mcp add grok --url https://grok.mcp.acedata.cloud/mcp, then codex mcp login grok. Its user settings are in ~/.codex/config.toml. Official Codex MCP guide.

Cursor project config (OAuth):

{
  "mcpServers": {
    "grok": {"url": "https://grok.mcp.acedata.cloud/mcp"}
  }
}

VS Code-specific workspace config (OAuth):

{
  "servers": {
    "grok": {"type": "http", "url": "https://grok.mcp.acedata.cloud/mcp"}
  }
}

Hosted API token

  1. Open Ace Data Cloud → Applications. Sign in, or register an account first.

  2. Find General application. If it has not been created, choose Initialize General Application. A general key can use the services available to your account; a dedicated application's key is limited to its service. Check the required service/model access and current pricing.

  3. Copy the API Key from the application card, or open Keys / Manage Keys → Create to create a separate key for this integration. Give it a recognizable name so you can revoke or rotate it independently.

  4. When creating a key, review Expiration Time, Set Usage Limitation, and Allowed APIs. Enable only the restrictions you need, allow the operations you will call, then click Create and copy the token from the key list. Task lookup does not grant permission to submit a generation. Confirm the application's balance can cover your first request; any trial allowance is whatever your account currently displays.

  5. Copy only the token value, without quotation marks, spaces, or Bearer . An API Key / API Token field expects this raw value; only a manually configured HTTP Authorization header needs the Bearer prefix. A platform-... account-management token cannot replace a generation API key.

Copy an application API key or open Manage Keys

Create a separately named key with optional restrictions

Save the key in the client's credential store or the environment variable shown below. Never put it in a prompt, shared workflow, screenshot, or Git commit. If authentication fails, check the full copied value, application/service access, expiration, usage limit, and balance before creating another key.

A fixed Bearer header bypasses OAuth. If the header is invalid, remove it before trying browser sign-in; keep the saved credential private.

For Claude Code, the shell expands the token when you add the server; treat the saved user MCP config as a secret:

export ACEDATACLOUD_API_TOKEN='YOUR_API_TOKEN'
claude mcp add --transport http --scope user grok https://grok.mcp.acedata.cloud/mcp \
  --header "Authorization: Bearer $ACEDATACLOUD_API_TOKEN"

For a Claude Code project config, put a variable reference in <project>/.mcp.json and set that variable in the environment that launches Claude Code:

{
  "mcpServers": {
    "grok": {
      "type": "http",
      "url": "https://grok.mcp.acedata.cloud/mcp",
      "headers": {"Authorization": "Bearer ${ACEDATACLOUD_API_TOKEN}"}
    }
  }
}

Cursor uses a different environment-variable syntax in ~/.cursor/mcp.json or an uncommitted project config:

{
  "mcpServers": {
    "grok": {
      "url": "https://grok.mcp.acedata.cloud/mcp",
      "headers": {"Authorization": "Bearer ${env:ACEDATACLOUD_API_TOKEN}"}
    }
  }
}

In VS Code, run MCP: Open User Configuration and merge this server plus its masked input; ${input:...} is for VS Code's user/workspace format and is not portable to the Agent Host .mcp.json format:

{
  "inputs": [
    {"id": "acedata-grok-token", "type": "promptString", "description": "AceDataCloud API token", "password": true}
  ],
  "servers": {
    "grok": {
      "type": "http",
      "url": "https://grok.mcp.acedata.cloud/mcp",
      "headers": {"Authorization": "Bearer ${input:acedata-grok-token}"}
    }
  }
}

For Cline, use its MCP configuration UI or CLI file ~/.cline/data/settings/cline_mcp_settings.json; its remote transport value is streamableHttp. For JetBrains AI Assistant, add a remote URL from Settings → Tools → AI Assistant → Model Context Protocol (MCP). For Zed, use a context_servers entry with the URL only for OAuth or add a local Bearer header. These clients have different configuration schemas; follow their current UI rather than copying another client's JSON. Cline · JetBrains · Zed.

Local stdio

Install the package and give the local process an API token:

python -m pip install mcp-grok
export ACEDATACLOUD_API_TOKEN='YOUR_API_TOKEN'
mcp-grok

For Claude Desktop local MCP, merge this entry into the file opened by its developer settings (~/Library/Application Support/Claude/claude_desktop_config.json on macOS). uvx requires uv on PATH:

{
  "mcpServers": {
    "grok": {
      "command": "uvx",
      "args": ["mcp-grok"],
      "env": {"ACEDATACLOUD_API_TOKEN": "YOUR_API_TOKEN"}
    }
  }
}

Keep this user-level file private. Self-hosted HTTP uses mcp-grok --transport http --port 8000; expose it only with suitable network and TLS controls. Local execution still calls the AceDataCloud API.

Check before using the service

  1. https://grok.mcp.acedata.cloud/health returning {"status":"ok"} checks endpoint reachability only.

  2. Confirm that the MCP client loads tools. grok_list_models is a reference tool; it does not verify downstream API access or balance.

  3. If you need a full API check, call grok_chat_completions with your own valid input after reviewing current service documentation and displayed pricing. If the result contains a task ID, call grok_get_task on that same ID until terminal success or failure. Do not resubmit the operation just to check progress.

For 401, check which auth route the client used and whether the token or OAuth session is valid. A 403 may mean an account permission or content moderation failure; read the returned error. Insufficient balance and downstream service failures need their own diagnosis. A listed tool or submitted task does not prove a successful result.

Development

pip install -e ".[dev,test]"
pytest --cov=core --cov=tools
ruff check .

Documentation

Documentation

License

MIT — see LICENSE.

Available Tools

8 tools
grok_chat_completionsAInspect

Create a Grok (xAI) chat completion via the AceDataCloud Grok API.

Sends messages to a Grok chat model and returns the generated response in the
OpenAI-compatible chat completion format.

Use this when:
- You want to chat/reason with a Grok model (grok-4 / grok-3 family)
- You need vision/image understanding
- You need tool/function calling with Grok

For generating videos, use grok_text_to_video / grok_image_to_video instead.

Returns:
    JSON response containing the chat completion result.
NameRequiredDescriptionDefault
nNoHow many chat completion choices to generate. Default 1.
seedNoRandom seed for (best-effort) deterministic sampling.
stopNoStop sequences where the API will stop generating tokens.
userNoEnd-user identifier for abuse monitoring.
audioNoAudio output configuration when requesting audio modality.
modelNoThe Grok chat model: grok-4.5 (default, latest flagship), grok-4 or grok-3.grok-4
storeNoWhether to store the output of this chat completion. Default false.
toolsNoList of tools (functions) the model may call.
top_pNoNucleus sampling probability mass. Default 1.
streamNoWhether to stream partial message deltas. Default False.
logprobsNoWhether to return log probabilities of output tokens.
messagesYesConversation messages. Each message is a dict with 'role' ('system'/'user'/'assistant'/'tool') and 'content' keys. Content may be a list of text/image_url parts for image input. Required.
metadataNoDeveloper-defined metadata attached to the request.
logit_biasNoToken logit bias map.
max_tokensNoMaximum number of tokens to generate.
modalitiesNoOutput modalities requested for this response.
predictionNoStatic predicted output content to improve latency.
temperatureNoSampling temperature between 0 and 2. Higher = more random.
tool_choiceNoControls tool calling. 'none', 'auto', 'required', or a dict.
service_tierNoSpecifies the processing tier. Options: 'auto' (default), 'default', 'flex' (asynchronous batch-eligible), 'scale', or 'priority'.
top_logprobsNoNumber of most likely tokens to return at each token position.
stream_optionsNoOptions for streaming responses.
response_formatNoResponse format specification (e.g. {"type": "json_object"}).
presence_penaltyNoPresence penalty between -2.0 and 2.0. Positive increases topic variety.
reasoning_effortNoReasoning effort. Only applies to reasoning-capable models; ignored by non-reasoning models.
frequency_penaltyNoFrequency penalty between -2.0 and 2.0. Positive decreases repetition.
web_search_optionsNoWeb search configuration for search-capable models.
parallel_tool_callsNoWhether to enable parallel tool calls. Default true.
max_completion_tokensNoUpper bound for tokens generated for a completion.

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden, and it discloses only that it is an OpenAI-compatible call returning a chat completion. It is silent on auth/credential needs, rate limits, cost, and how the stream=true/dtream_options or tools paths change the interaction beyond what the schema already states.

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?

Front-loaded with the core action, then a compact bulleted usage block, then routing. The 'Returns' sentence is largely redundant because an output schema exists (has_output_schema: true), which is the only wasted line.

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 29-param, 1-required-param tool with full schema coverage and an output schema, the description supplies exactly the missing pieces: what the call does, when to choose it, and which siblings to use instead. No return-value explanation is needed given the output schema.

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 description coverage is 100% (29 params, each with its own description and defaults), so the schema already does the heavy lifting and the baseline is 3. The description adds no parameter-level semantics beyond repeating the model-family idea that the 'model' enum already encodes.

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 ('Create a Grok (xAI) chat completion') and names the API provider, then explicitly contrasts itself with grok_text_to_video / grok_image_to_video. An agent can distinguish this from every sibling in the list without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides an explicit 'Use this when' list (chat/reasoning, vision, tool calling) plus an explicit negative routing rule pointing video generation to the two video siblings. When-to-use, when-not-to-use, and the alternative are all named.

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

grok_get_prompt_guideAInspect

Get guidance on writing effective prompts for Grok Imagine video generation.

Shows how to structure prompts for best video generation results.

Returns:
    Complete guide with prompt structure, examples, and tips.
NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, so the description fully bears the burden of behavioral disclosure. It accurately describes a read-only operation that returns a guide, which is non-destructive and safe. No contradictions or omissions.

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?

The description is brief and front-loaded with the core purpose, but the docstring format includes redundant backticks and a 'Returns:' section that could be integrated. Overall efficient with minimal waste.

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 parameterless tool with an output schema, the description fully explains what the guide covers (structure, examples, tips). Given zero complexity and the output schema handling return details, it is complete.

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?

There are no parameters, and the schema coverage is 100% (empty). The description adds value by detailing the content of the returned guide (prompt structure, examples, tips), exceeding the baseline of 4 for zero-parameter tools.

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?

The description clearly states the tool provides guidance on writing prompts for Grok Imagine video generation, using a specific verb ('Get') and resource ('prompt guide'). It distinguishes itself from sibling tools like grok_text_to_video, which perform actual generation.

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?

The description implies use when needing help with prompt structuring for video generation, but does not explicitly state when not to use it or provide alternatives among siblings. The context from sibling names makes it fairly clear, but lacks explicit exclusions.

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

grok_get_taskAInspect

Query the status and result of a video generation task.

Use this to check if a generation is complete and retrieve the resulting
video URLs and metadata.

Use this when:
- You want to check if a generation has completed
- You need to retrieve video URLs from a previous generation
- You want to get the full details of a generated video

Task states:
- 'pending'/'processing': Generation is still in progress
- 'succeeded': Generation finished successfully
- 'failed': Generation failed (check error message)

Returns:
    Task status and generated video information including URLs and state.
NameRequiredDescriptionDefault
task_idYesThe task ID returned from a generation request. This is the 'task_id' field from any grok_text_to_video or grok_image_to_video tool response.

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden. It explains the query nature (read-only), what it returns (status, URLs, metadata), and task states including error handling. This provides sufficient behavioral context for safe invocation.

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?

The description is well-structured with bullet points and clear sections. It is front-loaded with purpose and usage guidelines. Minor duplication in 'Use this when' list could be trimmed, but overall efficient.

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?

Given the tool's simplicity (1 parameter, output schema exists), the description covers purpose, input, states, and return info. Missing info like rate limits or prerequisites is not critical for this query tool.

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?

Schema coverage is 100% with one parameter well-described. The description adds value by specifying that the task_id comes from generation tool responses, which helps the agent understand the parameter's origin beyond the schema.

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?

The description clearly states the tool queries the status and result of a video generation task. The verb 'Query' and resource 'task' are specific, and the context distinguishes it from sibling grok_get_tasks_batch (plural) for multiple tasks.

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?

The description provides three explicit 'Use this when' scenarios covering completion check, URL retrieval, and full details. It also lists task states. However, it does not explicitly exclude usage when alternative tools like grok_get_tasks_batch are more appropriate, or mention prerequisites like authentication.

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

grok_get_tasks_batchAInspect

Query multiple video generation tasks at once.

Efficiently check the status of multiple tasks in a single request.
More efficient than calling grok_get_task multiple times.

Use this when:
- You have multiple pending generations to check
- You want to get status of several videos at once
- You're tracking a batch of generations

Returns:
    Status and video information for all queried tasks.
NameRequiredDescriptionDefault
task_idsYesList of task IDs to query. Maximum recommended batch size is 50 tasks.

Output Schema

NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

No annotations provided, so description must cover behavioral traits. It states it returns status and video info, but does not disclose if it is read-only, side effects, rate limits, or error handling on missing task IDs. Basic coverage, not rich.

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?

Extremely concise: one-line summary, efficiency note, bulleted usage list, and returns statement. Every sentence is necessary and well-structured.

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?

Given the tool's simplicity (one parameter, output schema exists), the description is reasonably complete. Mentions the return type and usage scenarios. Could briefly address error handling for partial batches, but acceptable.

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 description coverage is 100% and already documents the parameter well. The description adds context about efficiency but does not significantly extend meaning beyond the schema.

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?

The description clearly states it queries multiple video generation tasks at once, using a specific verb and resource. It explicitly differentiates from the sibling grok_get_task by noting it is more efficient.

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?

Provides explicit 'Use this when:' scenarios and contrasts with calling grok_get_task multiple times. Lacks explicit when-not-to-use, but the positive guidance is clear and helpful.

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

grok_image_to_videoAInspect

Generate AI video from a reference image using Grok Imagine.

This animates your input image into a video clip. Provide a prompt to
describe the motion you want, and optional reference images to guide style.

Use this when:
- You have a specific image you want to animate
- You want consistent visual style from a reference
- You want to turn a still photo into a short video

For video generation from text only, use grok_text_to_video instead.

Returns:
    Task ID and generated video information including URLs and state.
NameRequiredDescriptionDefault
modelNoGrok Imagine model. All models support image-to-video. 'grok-imagine-video-1.5-fast:reverse' (default) is fastest and cheapest; 'grok-imagine-video-1.5:official' offers the highest fidelity (up to 1080p) and is image-to-video only; 'grok-imagine-video' provides standard quality image-to-video generation.grok-imagine-video-1.5-fast:reverse
promptNoOptional description of the motion/action to apply to the image. Examples: 'The camera slowly zooms in as the character smiles', 'Gentle wind moves the trees and clouds drift across the sky'. Optional when an image_url is provided.
durationNoVideo duration in seconds (default 6). 'grok-imagine-video-1.5-fast:reverse' supports 6-30; every other model supports 1-15.
image_urlYesURL of the input image to animate into a video. Required for image-to-video generation.
resolutionNoOutput resolution. '480p' (default, cheaper), '720p', or '1080p'. Higher resolution costs more per second on the per-second-priced models.480p
aspect_ratioNoVideo aspect ratio. Should typically match your input image aspect ratio for best results.16:9
callback_urlNoOptional URL to receive a POST callback when generation completes.
reference_image_urlsNoOptional list of additional reference image URLs used to guide the style or content of the generated video.

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses the operation (animating image into video) and the return shape (Task ID, video information, URLs, state). However, it does not explicitly state that generation is asynchronous, whether the response is immediate or requires polling via grok_get_task, or any limitations on input images. This ambiguity is a notable gap.

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 concise and well-structured: a one-sentence purpose, a brief explanation, a bulleted 'Use this when' list, a sibling-tool pointer, and a return summary. Every sentence earns its place; no fluff.

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 an 8-parameter tool with a rich schema and output schema, the description covers purpose, usage, and returns. The main gap is the lack of explicit guidance on the async task lifecycle (e.g., 'returns a task ID immediately; use grok_get_task to poll for completion'). Given the sibling tools include grok_get_task, this context would complete the picture.

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 100%, so the baseline is 3. The description adds only minimal context beyond the schema, such as mentioning prompt for motion and reference images for style. It does not explain parameter interactions or constraints beyond what the schema already provides.

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?

The description starts with a specific verb+resource: 'Generate AI video from a reference image using Grok Imagine.' It clearly states the tool animates an input image into a video clip. It distinguishes itself from the sibling tool grok_text_to_video by explicitly directing text-only generation there.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a 'Use this when' bullet list with three concrete scenarios, and directly names the alternative tool ('For video generation from text only, use grok_text_to_video instead'). This gives clear when-to-use and when-not-to-use guidance.

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

grok_list_actionsAInspect

List all available Grok Imagine tools and workflows.

Reference guide for what each tool does and how they fit together.

Returns:
    Categorized list of all tools and example workflows.
NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses that it returns a categorized list of tools and example workflows, which is sufficient for a read-only listing tool.

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 concise with three short sentences, no unnecessary words, and front-loaded purpose. Every sentence adds value.

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 simple listing tool with no parameters and an output schema present, the description fully covers purpose, usage context, and return format.

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 no parameters, schema coverage is 100%. The description does not need to add parameter details, meeting the baseline of 4 for zero-parameter tools.

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?

The description clearly states the tool lists all available Grok Imagine tools and workflows, and serves as a reference guide. This distinguishes it from sibling tools that perform specific actions.

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?

The description implies use for discovery and understanding tool relationships but does not explicitly state when to use versus alternatives or when not to use.

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

grok_list_modelsAInspect

List all available Grok models (chat + video) and their capabilities.

Shows the chat models and the Grok Imagine video models with their features
and input rules. Use this to understand which model to choose.

Returns:
    Tables of all models with their capabilities.
NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It specifies that it returns tables with capabilities, which is transparent but could mention if it makes a network call or requires authentication. For a simple read operation, this is adequate.

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 four sentences, well-structured with a summary, details on what it shows, and a return note. No fluff, every sentence adds value.

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?

Given no parameters and an output schema, the description covers purpose, usage, and return format. It is complete for a list tool with siblings, and does not need to explain return values due to the output schema.

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?

There are no parameters, so schema coverage is 100% trivial. The description adds context about what the tool returns (chat + video models, capabilities), which is valuable beyond the empty schema. Baseline 4 for zero params is appropriate.

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?

The description clearly states it lists all available Grok models (chat + video) and their capabilities, using a specific verb ('list') and resource ('models'). It distinguishes from siblings like grok_chat_completions (which uses models) and the video generation tools.

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?

The description explicitly says 'Use this to understand which model to choose,' providing clear usage guidance. While it doesn't mention when not to use or alternatives, the context is sufficient for a list tool.

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

grok_text_to_videoAInspect

Generate AI video from a text prompt using Grok Imagine.

This creates a video from scratch based on your text description. Grok
Imagine will interpret your prompt and generate a matching video clip.

Use this when:
- You want to create a video from a text description
- You don't have a reference image to use
- You want maximum creative freedom

Only the 'grok-imagine-video-1.5-fast:reverse', 'grok-imagine-video:reverse',
and 'grok-imagine-video:official' models support text-to-video. For generating
a video from a reference image, use grok_image_to_video instead.

Returns:
    Task ID and generated video information including URLs and state.
NameRequiredDescriptionDefault
modelNoGrok Imagine model. Text-to-video is supported by 'grok-imagine-video-1.5-fast:reverse' (default, fast 6-30s), 'grok-imagine-video:reverse' (standard 1-15s), 'grok-imagine-video:official' (official, higher fidelity), and 'grok-imagine-video' (standard quality). Do NOT use 'grok-imagine-video-1.5:official' here — it is image-to-video only.grok-imagine-video-1.5-fast:reverse
promptYesDescription of the video to generate. Be descriptive about scene, subject, action, camera movement, lighting, and style. Examples: 'A cinematic shot of a kitten chasing a butterfly in a sunlit garden', 'Drone shot flying over a neon-lit cyberpunk city at night'. Required for text-to-video.
durationNoVideo duration in seconds (default 6). 'grok-imagine-video-1.5-fast:reverse' supports 6-30; every other model supports 1-15.
resolutionNoOutput resolution. '480p' (default, cheaper), '720p', or '1080p'. Higher resolution costs more per second on the per-second-priced models.480p
aspect_ratioNoVideo aspect ratio. '16:9' for landscape/widescreen, '9:16' for portrait/vertical, '1:1' for square, plus '4:3', '3:4', '3:2', '2:3'.16:9
callback_urlNoOptional URL to receive a POST callback when generation completes. The callback will include the task_id and video results.

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses the async nature by stating 'Returns: Task ID and generated video information including URLs and state,' which implies polling. It also mentions model-specific durations, cost implications of resolution, and callback behavior. Minor gap: it doesn't explicitly state that generation is asynchronous or mention failure/error handling, but the return-type disclosure is strong.

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 well-structured: purpose sentence, context, explicit use cases, sibling-tool reference, model compatibility note, and a concise returns section. Every sentence earns its place, and it is front-loaded with the primary action. No redundancy or filler.

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?

Given six parameters with complex model constraints, the description covers all necessary operational context: supported models, duration limits, resolution cost implications, aspect ratio usage, callback behavior, and return type. It is complete for a task-creation tool with rich schema and no need to explain return values beyond the stated task ID and URLs.

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?

Schema coverage is 100%, so the baseline is 3. The description adds critical value beyond the schema by clarifying which models support text-to-video and explicitly warning against using 'grok-imagine-video-1.5:official' for this tool. This prevents a common mistake and adds semantic meaning not present in the schema enum alone.

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?

The description opens with a specific verb+resource statement: 'Generate AI video from a text prompt using Grok Imagine.' It clearly distinguishes the tool from its sibling grok_image_to_video by explicitly noting that image-to-video should use that sibling tool. The 'Use this when' bullets further narrow the purpose to text-only generation with creative freedom.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'Use this when' bullets provide clear usage context, and the description directly names the alternative tool for reference-image inputs. It also lists the exact models that support text-to-video, warning against using an incompatible model. This gives unambiguous when-to-use and when-not-to-use 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. 1 tool updatev0.1.10
    • Changedgrok_chat_completions1 field changed
      • changedInput schema / properties / model / enum
        Previous value: -[
        -  "grok-4.5",
        -  "grok-4",
        -  "grok-3"
        -]New value: +[
        +  "grok-4.7",
        +  "grok-4.5",
        +  "grok-4",
        +  "grok-3"
        +]
  2. 1 tool updatev0.1.6
    • Changedgrok_chat_completions14 fields changed
      • addedInput schema / properties / audio
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Audio output configuration when requesting audio modality.",
        +  "title": "Audio"
        +}
      • addedInput schema / properties / logit_bias
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": {
        +        "type": "integer"
        +      },
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Token logit bias map.",
        +  "title": "Logit Bias"
        +}
      • addedInput schema / properties / logprobs
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Whether to return log probabilities of output tokens.",
        +  "title": "Logprobs"
        +}
      • addedInput schema / properties / max_completion_tokens
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Upper bound for tokens generated for a completion.",
        +  "title": "Max Completion Tokens"
        +}
      • addedInput schema / properties / metadata
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Developer-defined metadata attached to the request.",
        +  "title": "Metadata"
        +}
      • addedInput schema / properties / modalities
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Output modalities requested for this response.",
        +  "title": "Modalities"
        +}
      • addedInput schema / properties / n
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "How many chat completion choices to generate. Default 1.",
        +  "title": "N"
        +}
      • addedInput schema / properties / parallel_tool_calls
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Whether to enable parallel tool calls. Default true.",
        +  "title": "Parallel Tool Calls"
        +}
      • addedInput schema / properties / prediction
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Static predicted output content to improve latency.",
        +  "title": "Prediction"
        +}
      • addedInput schema / properties / service_tier
        Added value: +{
        +  "anyOf": [
        +    {
        +      "enum": [
        +        "auto",
        +        "default",
        +        "flex",
        +        "scale",
        +        "priority"
        +      ],
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Specifies the processing tier. Options: 'auto' (default), 'default', 'flex' (asynchronous batch-eligible), 'scale', or 'priority'.",
        +  "title": "Service Tier"
        +}
      • addedInput schema / properties / store
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Whether to store the output of this chat completion. Default false.",
        +  "title": "Store"
        +}
      • addedInput schema / properties / stream_options
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Options for streaming responses.",
        +  "title": "Stream Options"
        +}
      • addedInput schema / properties / top_logprobs
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Number of most likely tokens to return at each token position.",
        +  "title": "Top Logprobs"
        +}
      • addedInput schema / properties / web_search_options
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Web search configuration for search-capable models.",
        +  "title": "Web Search Options"
        +}
  3. 2 tool updatesv0.1.5
    • Changedgrok_image_to_video2 fields changed
      • changedInput schema / properties / model / description
        Previous value: -"Grok Imagine model. All models support image-to-video. 'grok-imagine-video-1.5-fast:reverse' (default) is fastest and cheapest; 'grok-imagine-video-1.5:official' offers the highest fidelity (up to 1080p) and is image-to-video only."New value: +"Grok Imagine model. All models support image-to-video. 'grok-imagine-video-1.5-fast:reverse' (default) is fastest and cheapest; 'grok-imagine-video-1.5:official' offers the highest fidelity (up to 1080p) and is image-to-video only; 'grok-imagine-video' provides standard quality image-to-video generation."
      • changedInput schema / properties / model / enum
        Previous value: -[
        -  "grok-imagine-video-1.5-fast:reverse",
        -  "grok-imagine-video:reverse",
        -  "grok-imagine-video:official",
        -  "grok-imagine-video-1.5:official"
        -]New value: +[
        +  "grok-imagine-video-1.5-fast:reverse",
        +  "grok-imagine-video:reverse",
        +  "grok-imagine-video:official",
        +  "grok-imagine-video-1.5:official",
        +  "grok-imagine-video"
        +]
    • Changedgrok_text_to_video2 fields changed
      • changedInput schema / properties / model / description
        Previous value: -"Grok Imagine model. Text-to-video is supported by 'grok-imagine-video-1.5-fast:reverse' (default, fast 6-30s), 'grok-imagine-video:reverse' (standard 1-15s), and 'grok-imagine-video:official' (official, higher fidelity). Do NOT use 'grok-imagine-video-1.5:official' here — it is image-to-video only."New value: +"Grok Imagine model. Text-to-video is supported by 'grok-imagine-video-1.5-fast:reverse' (default, fast 6-30s), 'grok-imagine-video:reverse' (standard 1-15s), 'grok-imagine-video:official' (official, higher fidelity), and 'grok-imagine-video' (standard quality). Do NOT use 'grok-imagine-video-1.5:official' here — it is image-to-video only."
      • changedInput schema / properties / model / enum
        Previous value: -[
        -  "grok-imagine-video-1.5-fast:reverse",
        -  "grok-imagine-video:reverse",
        -  "grok-imagine-video:official",
        -  "grok-imagine-video-1.5:official"
        -]New value: +[
        +  "grok-imagine-video-1.5-fast:reverse",
        +  "grok-imagine-video:reverse",
        +  "grok-imagine-video:official",
        +  "grok-imagine-video-1.5:official",
        +  "grok-imagine-video"
        +]
  4. 1 tool updatev0.1.4
    • Addedgrok_get_tasks_batch
  5. 6 tool updatesv0.1.3
    • Changedgrok_chat_completions5 fields changed
      • changedInput schema / properties / messages / description
        Previous value: -"Conversation messages. Each message is a dict with 'role' ('system'/'user'/'assistant'/'tool') and 'content' keys. For vision with grok-2-vision, content may be a list of text/image_url parts. Required."New value: +"Conversation messages. Each message is a dict with 'role' ('system'/'user'/'assistant'/'tool') and 'content' keys. Content may be a list of text/image_url parts for image input. Required."
      • changedInput schema / properties / model / description
        Previous value: -"The Grok chat model. grok-4 (default, flagship) and grok-3 are the broadly available models. Also: grok-4-1-fast, grok-4-1-fast-non-reasoning, grok-3-mini, grok-2-vision (image input) — availability depends on upstream provisioning."New value: +"The Grok chat model: grok-4.5 (default, latest flagship), grok-4 or grok-3."
      • changedInput schema / properties / model / enum
        Previous value: -[
        -  "grok-4",
        -  "grok-4-1-fast",
        -  "grok-4-1-fast-non-reasoning",
        -  "grok-3",
        -  "grok-3-mini",
        -  "grok-2-vision"
        -]New value: +[
        +  "grok-4.5",
        +  "grok-4",
        +  "grok-3"
        +]
      • changedInput schema / properties / reasoning_effort / anyOf
        Previous value: -[
        -  {
        -    "enum": [
        -      "low",
        -      "high"
        -    ],
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "enum": [
        +      "minimal",
        +      "low",
        +      "medium",
        +      "high"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / reasoning_effort / description
        Previous value: -"Reasoning effort: 'low' or 'high'. Only applies to reasoning-capable models (e.g. grok-3-mini). Ignored by non-reasoning models."New value: +"Reasoning effort. Only applies to reasoning-capable models; ignored by non-reasoning models."
    • Addedgrok_get_prompt_guide
    • Addedgrok_image_to_video
    • Addedgrok_list_actions
    • Addedgrok_list_models
    • Addedgrok_text_to_video
  6. 6 tool updatesv0.1.2
    • Removedgrok_get_prompt_guide
    • Removedgrok_get_tasks_batch
    • Removedgrok_image_to_video
    • Removedgrok_list_actions
    • Removedgrok_list_models
    • Removedgrok_text_to_video
  7. 8 tool updatesv0.1.0
    • First observedgrok_chat_completions
    • First observedgrok_get_prompt_guide
    • First observedgrok_get_task
    • First observedgrok_get_tasks_batch
    • First observedgrok_image_to_video
    • First observedgrok_list_actions
    • First observedgrok_list_models
    • First observedgrok_text_to_video

TDQS

A4.2/5.0

Scored across 8 tools

Disambiguation4/5

The core capabilities (chat, text-to-video, image-to-video) are clearly distinct, and get_task vs get_tasks_batch is unambiguous. The only mild overlap is between grok_list_actions and grok_list_models, which both serve as informational/discovery helpers, but their outputs differ enough to be told apart.

Naming Consistency4/5

All tools use a consistent snake_case grok_ prefix with a predictable verb_noun structure (grok_get_task, grok_list_models, grok_text_to_video). grok_chat_completions is a slight outlier with a noun-only form, but the set is broadly uniform.

Tool Count5/5

Eight tools is well-scoped for a chat-plus-video-generation service, with each tool covering a distinct operation (generation, task polling, batch polling, discovery). Nothing feels redundant or padded.

Completeness4/5

The surface covers the full generation lifecycle: model/prompt discovery, text and image video generation, and single/batch task status retrieval. Minor gaps exist such as no task cancellation or deletion, but core workflows are fully supported.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers