Setup guides
Step-by-step setup for every client — Claude, Cursor, Codex, ChatGPT, Manus.
One endpoint for every client: https://mcp.shadow.co. Every setup ends the same way — sign in with Shadow, pick a workspace, start asking.
Requirements
A Shadow account on a paid plan — sign up at shadow.co.
At least one connected platform — your agent can only query data you have already connected inside Shadow.
An MCP-compatible client — Claude on Pro, Team or Enterprise, or any of the clients below.
Claude Desktop & Web
The fastest path — about 30 seconds.
Open Claude.ai and go to Customize → Connectors → + → Add a custom connector.
Name it Shadow.
Enter https://mcp.shadow.co as the URL.
Click Add.
Click Connect and sign in with your Shadow credentials.
Pick a workspace and click Authorize.
Optional: choose Always allow so Claude stops asking permission for each tool.
Claude now has live access to every platform you have connected in Shadow.
Claude Code
One command in your terminal:
You'll be prompted to authenticate via OAuth on first use.
Cursor
Add Shadow to ~/.cursor/mcp.json:
Windsurf
The same config, in ~/.codeium/windsurf/mcp_config.json:
Codex
Codex installs Shadow as a plugin. Add this to ~/.codex/config.toml:
Then run codex in your terminal and start using Shadow.
ChatGPT
Requires a paid ChatGPT plan with developer mode enabled.
Go to Settings → Apps → Advanced settings and toggle Developer Mode on.
Open Apps and click Create app.
Name it Shadow, describe it as “A second brain for your marketing team”, and set the connection to https://mcp.shadow.co.
ChatGPT opens Shadow's sign-in page — log in and authorize access.
Mention @Shadow in any chat or project to start using it.
Manus
Open manus.im and go to Manage → Connectors.
Click Add connectors → Custom MCP.
Name it Shadow, set transport type to HTTP, enter https://mcp.shadow.co and click Save.
Back in chat, run your first query and log in when Manus prompts you.
Grokbot (xAI's Grok CLI) speaks MCP natively over streamable HTTP and runs the OAuth flow itself — there is no bridge process to install and no token to paste.
Grokbot
Step 1: Install Grokbot
Or with npm: npm i -g @xai-official/grok
Step 2: Add Shadow
That writes the entry below into ~/.grok/config.toml, so Shadow is available in every project. You can also add it by hand:
Add --scope project instead to write ./.grok/config.toml, which you can commit and share with your team.
<aside>
⚠️
Use http, not sse. Shadow MCP serves streamable HTTP at the root URL and has no /sse endpoint, so --transport sse fails the handshake. http is already the default for an https:// URL.
</aside>
Step 3: Authenticate
Run
grokin your terminal.Type
/mcpsto open the MCP servers modal.Select shadow and press
ito authenticate.Your browser opens Shadow's sign-in page → sign in with your Shadow credentials → pick a workspace → Authorize.
Grok stores the resulting tokens in ~/.grok/mcp_credentials.json with owner-only permissions (0600). Shadow issues them through OAuth 2.1 + PKCE with dynamic client registration, so Grok registers its own client — you never handle a key.
Step 4: Confirm it worked
Before you authenticate this reports OAuth authorization required. That is the expected state — it means Grok reached Shadow and Shadow asked it to log in. After authorising, the same command reports the server healthy along with its tool count.
Step 5: Use Shadow in Grokbot
Shadow's tools are namespaced with the server name — shadow__query_data, shadow__get_creative_performance_cards, and so on. Grok does not put every tool in the prompt: it discovers them with its built-in search_tool and then runs them with use_tool. So name Shadow in your request:
"Use Shadow to pull my top Meta ads by spend last week."
Troubleshooting Grokbot
🔴 Grok finds the Shadow tools but says it can't run them. Over xAI's responses wire protocol the model receives the tools and never emits a tool call; over chat_completions the same turn calls them. Verified against Grok 1.0.5 on 2026-08-28. If you hit this, set XAI_API_KEY in your shell and redefine the model you're running in ~/.grok/config.toml:
Repeat the block for every model you pin — a model without one falls back to responses and loses its tools silently: the turn still answers, it just answers from nothing.
🟡 A large result comes back truncated. Grok caps MCP tool results at 20,000 bytes and spills the full payload into the session's mcp/ folder. Raise it in ~/.grok/config.toml:
🟡 You edited the config by hand. Press r in the /mcps modal to reload the server list without restarting Grok.
