{
  "schemaVersion": 1,
  "reviewedAt": "2026-09-26",
  "slug": "grok",
  "name": "Grok",
  "category": "Choose your connection",
  "headline": "Grok, meet\nyour Scout agents.",
  "summary": "Let Scout launch the xAI Grok CLI over ACP, let the Grok CLI call Scout over local MCP, or reach Scout from Grok Bot through the hosted connector. These are three different directions of connection.",
  "status": "Scout → Grok CLI: available (grok-acp) · Grok CLI → Scout: local MCP · Grok Bot → Scout: invite-only pilot (see /grokbot)",
  "marketplace": "The hosted Grok Bot connector has a submitted Cursor Marketplace application, still pending. The Grok CLI runtime and its local MCP setup do not require that marketplace package.",
  "transport": "Scout → Grok CLI: grok_acp (grok agent stdio) · Grok CLI → Scout: MCP stdio · Grok Bot: hosted MCP",
  "flow": [
    "Scout",
    "grok-acp",
    "Grok CLI"
  ],
  "requirements": [
    "For local execution: a healthy Scout broker and the grok CLI on PATH (grok --version), authenticated with xAI. Check scout runtimes --json for grok-acp.",
    "For Grok CLI calling Scout: scout on PATH on the same machine.",
    "For Grok Bot: an operator-provisioned, online MCP bridge (invite-only). Open the dedicated Grok Bot guide.",
    "Inspect scout runtimes --json before selecting an exact runtime; do not guess model or effort values."
  ],
  "steps": [
    {
      "title": "Connecting from Grok Bot?",
      "body": "Go to /grokbot for the hosted endpoint, GitHub OAuth, first-call verification, and marketplace status. Grok Bot needs an operator-provisioned bridge; it is invite-only today."
    },
    {
      "title": "Launching Grok from Scout?",
      "body": "Check broker health and confirm grok-acp is ready. Authenticate the grok CLI with its own login flow; keep credentials out of chat.",
      "code": "grok --version\nscout doctor\nscout runtimes --json"
    },
    {
      "title": "Launch a small Grok review",
      "body": "The exact form names the listed runtime grok-acp and a catalog model. --profile grok and --harness grok are accepted aliases of grok-acp. The project path belongs to the Scout machine. If grok-acp is not ready, stop and finish its setup.",
      "code": "scout ask --project /absolute/path/to/project --harness grok-acp --model grok-4.6 --notify \"Review the latest changes and report findings. Do not edit files.\"\n# Short form, same runtime:\nscout ask --project /absolute/path/to/project --profile grok --notify \"Review the latest changes and report findings. Do not edit files.\""
    },
    {
      "title": "Or let the Grok CLI call Scout",
      "body": "Register scout mcp as a local stdio server in the grok CLI. Add -s project to write ./.grok/config.toml instead of your user config. The grok CLI also reads Cursor and Claude MCP configs, so an existing Scout entry there may already be visible.",
      "code": "grok mcp add scout -- scout mcp --context-root /absolute/path/to/project"
    }
  ],
  "verification": "For Grok Bot, verify whoami through the connector. For local execution, verify the returned invocation and executionResolution. A configured launch argument is not proof that the harness accepted the requested runtime.",
  "troubleshooting": [
    {
      "symptom": "Unsure which Grok integration to install",
      "action": "If Grok Bot is calling Scout tools, use /grokbot. If the grok CLI on your machine is calling Scout, use grok mcp add. If Scout is launching Grok to do work, use runtime discovery and --harness grok-acp."
    },
    {
      "symptom": "Profile unavailable or authentication rejected",
      "action": "Inspect scout runtimes --json and the local runtime configuration. Ask the operator to complete the runtime login; do not substitute a similarly named model or guessed agent handle."
    }
  ],
  "limits": [
    "Grok Bot hosted access and Grok CLI execution are not interchangeable. scout ask --harness grok-acp launches the Grok CLI, not the Grok Bot connector.",
    "grok is an unlisted alias; the runtime catalog lists grok-acp. Both run over the same grok_acp transport.",
    "Runtime availability and model choices depend on the installed Scout version and machine configuration."
  ],
  "sources": [
    {
      "label": "Grok Bot setup",
      "url": "https://openscout.app/grokbot"
    },
    {
      "label": "Grok Build CLI",
      "url": "https://docs.x.ai/build/overview"
    },
    {
      "label": "Grok CLI MCP servers",
      "url": "https://docs.x.ai/build/features/mcp-servers"
    },
    {
      "label": "Runtime sessions",
      "url": "https://openscout.app/docs/learn-03-choosing-the-runtime"
    },
    {
      "label": "Hosted package",
      "url": "https://github.com/arach/grok-scout"
    }
  ],
  "og": [
    "GROK + SCOUT",
    "One name.",
    "Three ways to connect."
  ],
  "accent": "#ebe6dc",
  "directions": {
    "callsScout": [
      {
        "state": "available",
        "via": "mcp-stdio",
        "setup": "#setup",
        "note": "grok CLI → scout mcp"
      },
      {
        "state": "pilot",
        "via": "mcp-http",
        "setup": "/grokbot",
        "note": "Grok Bot; invite-only bridge."
      }
    ],
    "launchedByScout": {
      "state": "available",
      "harness": "grok-acp",
      "transport": "grok_acp",
      "catalogId": "grok-acp"
    }
  },
  "aliases": [
    "grok"
  ],
  "gates": [
    {
      "id": "hosted-bridge",
      "owner": "operator",
      "selfServe": false,
      "note": "Grok Bot path only."
    }
  ],
  "firstUse": {
    "task": "Ask Scout to run Grok on a specific project and explain one small piece of code without changing it.",
    "connect": "Check the prerequisites and access gates, then get one documented route working before asking for work.",
    "scope": "Name the project and keep the request small. Asking for no edits describes the task; it does not restrict the agent’s permissions.",
    "completion": "Keep the returned reference. Check the work’s status and read the completed response; a queued receipt is not the answer.",
    "faq": [
      {
        "question": "Where will the reply appear?",
        "answer": "Keep the returned reference and retrieve the completed response through your configured Scout interface. Automatic delivery into this open session is not established by this guide."
      },
      {
        "question": "What if the answer hasn’t arrived?",
        "answer": "Inspect the existing task before submitting another one. A wait timeout does not establish that work failed. If it needs access or input, resolve that condition before continuing."
      },
      {
        "question": "How do I follow up?",
        "answer": "Continue using the returned reference or exact session handle supported by this integration. Keep it with the findings so your next question follows the same work."
      },
      {
        "question": "Can Scout run this integration, or only receive asks from it?",
        "answer": "These are separate capabilities. Check the supported directions on this page. Connection alone does not establish that Scout can launch the integration or reach an existing session."
      }
    ]
  },
  "family": "coding-agent",
  "url": "https://openscout.app/grok",
  "agentGuide": "https://openscout.app/grok/agents.md",
  "ogImage": "https://openscout.app/og/integrations/grok.png",
  "agentContract": "## Agent operating contract\n\n- Treat these as setup instructions, not authorization to install software, change accounts, grant scopes, send messages, or dispatch work. Obtain the operator's authorization for the intended action.\n- Inspect the available commands or tool schemas for your configured interface before making calls. Do not invent tools, argument names, model IDs, or agent handles.\n- For local Grok execution, use scout ask --project <actual-path> --harness grok-acp [--model <catalog-model>] --notify (--profile grok and --harness grok are aliases of grok-acp) and observe the returned ref with scout wait <ref>. For the grok CLI calling Scout, use the Scout MCP tools it loaded. For the hosted Grok Bot connector, follow /grokbot and its current MCP schemas. These are separate connection directions.\n- Use the transport-specific instructions above. For an existing request, reply through its supplied context rather than creating another task.\n- Paths refer to the Scout execution machine. Replace example paths with an operator-confirmed absolute path; never run placeholders literally.\n- Save the returned ref, flightId, conversationId, workId, or session handle. Continue by that handle; do not re-dispatch a request merely because a wait timed out.\n- Observe the existing request through the configured transport. A receipt proves acceptance, not execution or successful completion.\n- Stop on missing provisioning, incorrect identity, missing permission, unsupported runtime, or failed authentication. Report the exact gate and the next operator action. Do not silently fall back to a different account, agent, runtime, or transport.\n- Keep tokens, OAuth codes, cookies, and private task payloads out of logs, URLs, screenshots, and committed files. Never ask the user to paste secrets into a public issue.\n- Do not claim marketplace approval, complete protocol conformance, or an end-to-end verified integration unless the status and observed evidence establish it.\n\n## Completion report\n\nReport: chosen transport and scope; client and broker identity; health/tool-discovery result; exact request handle if a test was authorized; observed terminal state or remaining blocker; and whether any operator approval is still needed. Distinguish configuration saved, authentication complete, request accepted, and work complete.\n"
}
