Connect any AI to your eGrow account
One Model Context Protocol server. Many AI clients — Claude, ChatGPT, Gemini, and any future client that speaks MCP.
Auth
The server speaks Streamable HTTP and follows the authenticated remote MCP spec. Pick whichever path your client supports — both run side by side on the same endpoint:
https://mcp.egrow.com/mcp
OAuth 2.1 (recommended)
Hosted clients (ChatGPT, claude.ai, Claude Desktop, Cursor, Codex…) auto-discover the auth server
via /.well-known/oauth-protected-resource. With Dynamic Client Registration enabled,
the client registers itself, opens an eGrow consent screen, and stores the access token —
refreshing silently afterwards. Nothing to set up ahead of time.
API key (fallback)
Use this for Claude Code, cURL, custom adapters, plans without Connectors, or workspace policies
that block third-party OAuth flows. Settings → API Tokens → Create token; the value starts
with egrow_. The server accepts it via X-API-Key, X-Egrow-API-Key, or
Authorization: Bearer <key>.
Clients
Per-client setup. Pick yours.
Claude Code
claude mcp add --transport http egrow https://mcp.egrow.com/mcp
Then run /mcp in a Claude Code session and complete the OAuth flow. To pin a long-lived API key instead, append --header "X-API-Key: egrow_YOUR_API_KEY".
Skip per-tool permission prompts by editing ~/.claude/settings.json:
{
"permissions": {
"allow": ["mcp__egrow"]
}
}
Claude Desktop
Settings → Connectors → Add custom connector. Name eGrow, URL https://mcp.egrow.com/mcp, default auth (OAuth). Click Connect; the eGrow consent screen opens and stores the token.
Or pin an API key via the config file (~/Library/Application Support/Claude/claude_desktop_config.json on macOS, %APPDATA%\Claude\claude_desktop_config.json on Windows):
{
"mcpServers": {
"egrow": {
"type": "http",
"url": "https://mcp.egrow.com/mcp",
"headers": {
"X-API-Key": "egrow_YOUR_API_KEY"
}
}
}
}
claude.ai
Available on Pro / Team / Enterprise. Settings → Connectors → Add custom connector. Name eGrow, URL https://mcp.egrow.com/mcp, auth OAuth. Click Connect and approve.
If OAuth is blocked by workspace policy, switch to Custom Header with X-API-Key: egrow_YOUR_API_KEY.
ChatGPT
Available on Pro / Team / Enterprise. Settings → Connectors → Browse Connectors → Create. Name eGrow, MCP Server URL https://mcp.egrow.com/mcp, auth OAuth, check I trust this application, then Create. Toggle the connector on per chat with + → Connectors.
Fallback: pick Custom / API Key auth with header X-API-Key: egrow_YOUR_API_KEY.
Cursor
One-click install: Add eGrow to Cursor — opens Cursor and registers the server. Or open Cursor → Settings → MCP and add a custom server pointing at https://mcp.egrow.com/mcp.
VS Code
CTRL/CMD + P → MCP: Add Server → Command (stdio), then enter:
npx mcp-remote https://mcp.egrow.com/mcp
Name it eGrow. Or paste this into your settings.json:
{
"mcpServers": {
"egrow": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://mcp.egrow.com/mcp"]
}
}
}
Windsurf
CTRL/CMD + , → Cascade → MCP servers → Add custom server:
{
"mcpServers": {
"egrow": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://mcp.egrow.com/mcp"]
}
}
}
Zed
CMD + , to open settings, then:
{
"context_servers": {
"egrow": {
"source": "custom",
"command": "npx",
"args": ["-y", "mcp-remote", "https://mcp.egrow.com/mcp"],
"env": {}
}
}
}
Codex
codex mcp add egrow --url https://mcp.egrow.com/mcp
Codex prompts you to log in and connect. If this is your first MCP in Codex, enable the rmcp feature in ~/.codex/config.toml:
[features]
experimental_use_rmcp_client = true
Gemini
Gemini doesn't speak MCP natively — point a thin adapter at the server URL above and convert the tool list to Gemini's function-calling format. The eGrow Laravel AI Assistant already uses this pattern internally and is the reference implementation.
cURL
Initialize handshake:
curl -X POST https://mcp.egrow.com/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "X-API-Key: egrow_YOUR_API_KEY" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2024-11-05",
"capabilities": {},
"clientInfo": { "name": "probe", "version": "0.1" }
}
}'
Call a tool:
curl -X POST https://mcp.egrow.com/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "X-API-Key: egrow_YOUR_API_KEY" \
-d '{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "whoami",
"arguments": {}
}
}'
Others
Hundreds of tools now support MCP. For clients that only speak stdio, use the mcp-remote bridge:
- Command:
npx - Arguments:
-y mcp-remote https://mcp.egrow.com/mcp - Environment: none
Try a prompt
Once your client is connected, paste any of these into a chat. The assistant picks the right tool on its own — no need to know tool names.
Quick lookups
How many orders did I get this week?
Show me order EGW100
Who are my top 5 customers this month?
Which products have stock under 10?
Actions
Refund the broken speaker on order EGW100
Move all "Pending" orders from yesterday to "Processing"
Send a quick reply to the conversation with Karim
Onboard a new customer: Sara Bensaid, +212600112233, Casablanca
Insights
What's my confirmation rate this week vs last week?
Which courier has the worst delivery rate this month?
What you can ask
40 tools across 7 domains. Each ships with a whenToUse / whenNotToUse guide and inline examples — the AI picks the right one without hand-holding. Counts and verb summaries below are read live from the running registry.
-
Orders 11 find · get · create · update · bulk · modify · merge
bulk_move_stagewriteMove all orders from one pipeline stage to another.create_orderwriteCreate an order. Supports both basic (customerId + lines) and full (nested customer + addresses + lines) shapes.find_duplicate_ordersreadIdentify candidate duplicate order groups.find_ordersreadSearch orders using the same free-text search the eGrow UI uses.get_confirmation_statsreadConfirmation funnel counts (pending / confirmed / cancelled) matching the same free-text query as find_orders.get_orderreadFetch a full order by id, order number, tracking number, or store order id.get_order_statsreadAggregate order metrics (total/paid/pending/refunded) matching the same free-text query as find_orders.merge_ordersdestructiveMerge duplicate orders into a primary.modify_line_itemsdestructiveRemove line items from an unfulfilled order, or refund line items on a paid order.modify_orderwriteAttach/detach a customer, assign agents, or swap a line item's variant on an existing order.update_orderwriteUpdate an order's editable fields (notes, addresses, custom attrs, stage).
-
Customers 10 find · get · create · update · modify · bulk · add · merge · flag
add_customers_to_groupwriteAdd customers to a customer group (segment).bulk_blacklist_customerswriteBlacklist or unblacklist multiple customers.create_customerwriteCreate a new customer.find_customersreadSearch customers using the same free-text search the eGrow UI uses.find_duplicate_customersreadFind candidate duplicate customer groups.flag_customers_as_duplicatewriteMark a set of customers as confirmed duplicates without merging yet.get_customerreadFetch a customer by ID with addresses and groups. Optionally include risk profile.merge_customersdestructiveMerge duplicate customers into a single primary record.modify_customer_addresswriteAdd, edit, or default a customer's shipping/billing address.update_customerwriteUpdate an existing customer's profile (name, email, phone).
-
Products 7 find · get · create · update
create_productwriteCreate a new product with variants and options.find_categoriesreadList or search product categories.find_productsreadSearch products using the same free-text search the eGrow UI uses.find_variantsreadSearch product variants using free-text query.get_productreadFetch a product with variants, options, media, and category.get_variantreadFetch a single variant by ID.update_productwriteUpdate an existing product.
-
Discovery 4 describe · whoami · health · get
describe_capabilitiesList or search the available tools. Optionally filter by domain, or fuzzy-find by intent.get_workflowFetch a named workflow playbook.health_checkServer version, GraphQL reachability, tool count.whoamiIdentify the calling user, account, currency, and permissions.
-
Analytics 3 dashboard · analytics · utm
get_analyticsreadFetch any analytics report — orders, confirmations, shipping, or agents — over a date range.get_dashboardreadFetch any dashboard widget by name (overview, revenue, top cities, top products, shipping partners, financial metrics, etc.).get_utm_analyticsreadUTM-attributed performance: totals or breakdown by source/medium/campaign/status.
-
Escape hatch 3 schema · query · mutation
graphql_mutationescapeExecute an arbitrary GraphQL mutation. Confirmed and audited.graphql_queryescapeExecute an arbitrary read-only GraphQL query against the eGrow API.graphql_schemaInspect the live eGrow GraphQL schema. Use to look up exact field names before writing graphql_query / graphql_mutation.
-
Pipelines 2 list · get
get_pipelinereadFetch a pipeline with full stage detail.list_pipelinesreadList all order pipelines and their stages.
Workflows
Some asks span multiple steps. The assistant follows a documented playbook for these — you describe the outcome, it handles the sequence.
- Order confirmation — "Confirm the pending orders from this morning"
- Order refund — "Refund the broken speaker on order EGW100"
- Order cancel — "Cancel order EGW242, customer changed her mind"
- Exchange — "Customer wants to swap the red shirt for blue on order EGW88"
- Customer merge — "Merge these two profiles, the second one is the duplicate"
- Customer onboard — "Onboard Karim, +212612345678, Rabat, marketing opt-in"
- Diagnose failed delivery — "Why didn't order EGW100 reach the customer?"
FAQ
Will my OAuth token refresh automatically?
Yes. The auth server issues rotating refresh tokens — access tokens last 1 hour, refresh tokens last 30 days. ChatGPT, Claude, and any compliant MCP client refresh silently. After 30 days of total inactivity you'll be prompted to re-consent once.
Can I authenticate with an API key instead of OAuth?
Yes. Generate one in Settings → API Tokens and pass it as X-API-Key, X-Egrow-API-Key, or Authorization: Bearer <key>. Both auth modes run on the same endpoint at the same time.
Does the server support Streamable HTTP?
Yes — at https://mcp.egrow.com/mcp. The server follows the authenticated remote MCP spec (2025-03-26).
I'm getting an internal server error when connecting.
Clear cached MCP auth state and reconnect: rm -rf ~/.mcp-auth. If you're using mcp-remote as a bridge, also make sure your Node.js is up to date.
My client doesn't speak Streamable HTTP — what now?
Use the mcp-remote bridge: npx -y mcp-remote https://mcp.egrow.com/mcp. It exposes the remote server over stdio so any stdio-only MCP client can connect.
Are destructive operations safe?
Yes. Delete, merge, refund, and similar operations require an explicit confirmation step server-side, even if the AI tries to skip it. Confirmations can't be bypassed via client settings.
Notes & limits
- Destructive operations (delete, merge, refund) require a confirmation — even if the AI tries to skip it.
- Every tool call is scoped to the calling user's account by the credential. No cross-tenant leakage.
- Rate limits per credential: 300 reads/min · 60 writes/min · 20 escape-hatch/min.
- Stateless and horizontally scalable.
- Uniform response shape: list tools return
{ items, page, perPage, total, hasMore }; errors return{ error: { code, message, hint, retry_safe } }.