Goflow MCP
A hosted Model Context Protocol server for the Goflow API. Add it to Claude or Codex and ask about your sales, profit, orders, products and inventory in plain language. It covers all 104 documented Goflow operations across 68 paths (spec v1, 45 tag groups).
POST https://goflow-mcp.u.jpapps.net/mcp
Reports it can pull
Goflow's own report API covers inventory only, so these are computed by walking the orders and
purchasing feeds. Ask in plain language — the server has a
goflow_capabilities tool that lists them back with the exact call for each.
| Sales report — 30 / 60 / 90 day and year to date | Units, orders, gross and net sales across every channel, against the previous period. |
| Profit report | Net sales less COGS, channel fees and freight — margin by channel, store or warehouse. |
| Top items sold — quantity, sales, profit | The best (and worst) sellers by units, revenue or profit, with margin per item. |
| Sales trend — growth or decline over time | Sales per day, week or month, with the growth rate and whether it is real or noise. |
| Profit trend — margin growth or decline | Gross profit and margin percentage per period, and the direction they are moving. |
| Cost report — cost increases or decreases over time | COGS per unit, fees as a share of sales, and freight per order, period by period. |
| Shipping cost report | What freight actually cost against what customers paid for it, by carrier or channel. |
| Channel performance — profitability trend per channel | Each channel's sales, profit and margin over time, side by side. |
| Restock recommendations | What to reorder and how much, from demand, stock on hand and stock already on order. |
| Purchase order tracker | What is on order, what has landed, what is overdue, and the value still outstanding. |
| Forecast | Projected units, sales and profit for the coming weeks or months, with a range. |
Money is net of tax, and profit is net sales less cost of goods, channel fees and the freight actually paid. Every answer states the window it covered, the statuses it excluded and whether the scan was capped — and reconciles its revenue against Goflow's own per-order subtotal.
What you need
Your own Goflow subdomain (the acme in
acme.goflow.com) and a Goflow API token. Nothing else — there is
no account to create here, and no client id or secret to ask us for.
You'll also be asked for your email address.
68 of Goflow's 104 operations are marked beta — including all of
products, reports and purchasing — and a beta endpoint refuses any request that doesn't carry a
contact address. It isn't a password or a second token: Goflow uses it to warn you before a
beta schema changes. Leave it out and a good token still can't read your own catalog, so this
server falls back to sadya@goflow.com — but give your own, or the
notices go to someone else.
We store none of it. There is no database behind this server: your credentials are sealed into the token your client holds and travel back to us on each request. To revoke access, rotate your API token in Goflow — that cuts off everything holding it, here and everywhere else.
Claude — web, desktop and mobile
- Settings → Connectors → Add custom connector.
- Paste
https://goflow-mcp.u.jpapps.net/mcpas the URL, and click Add. Leave Advanced settings alone — the OAuth client id and secret there are optional, and this server doesn't use them. - Click Connect. Claude opens a page here that asks for your Goflow subdomain and API token, checks them against Goflow, and sends you back.
Claude Code
The same flow, from the terminal:
claude mcp add --transport http goflow https://goflow-mcp.u.jpapps.net/mcp
Then run /mcp in Claude Code to sign in. To skip the browser entirely, put your
credentials straight into .mcp.json instead — subdomain, token and email in one
header, separated by colons:
{
"mcpServers": {
"goflow": {
"type": "http",
"url": "https://goflow-mcp.u.jpapps.net/mcp",
"headers": {
"Authorization": "Bearer YOUR-SUBDOMAIN:YOUR_GOFLOW_TOKEN:you@yourcompany.com"
}
}
}
}
Anything else
Any client that can set a request header can use that same single-header form:
Authorization: Bearer <subdomain>:<token>:<email>. The older
three-header form — Authorization: Bearer <token> alongside
X-Goflow-Subdomain and X-Beta-Contact — still works and will keep working.
For a client that can do neither OAuth nor headers, run
mcp-remote as a local stdio
proxy; it runs the OAuth flow on your own machine. Needs
Node installed.
{
"mcpServers": {
"goflow": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://goflow-mcp.u.jpapps.net/mcp"]
}
}
}
Codex
# ~/.codex/config.toml [mcp_servers.goflow] url = "https://goflow-mcp.u.jpapps.net/mcp" bearer_token_env_var = "GOFLOW_TOKEN"
bearer_token_env_var is the name of an environment variable, not
the token. Don't paste your Goflow token into the config file — Codex rejects an
inline bearer_token on this transport, and a token in a file is a token you'll
leak. Set that variable in the shell that launches Codex instead:
export GOFLOW_TOKEN=YOUR-SUBDOMAIN:your-goflow-token:you@yourcompany.com
Codex reads it from there and sends it as Authorization: Bearer. Because the
subdomain travels inside that value, there is no http_headers block to get wrong.
Check it works
curl -X POST https://goflow-mcp.u.jpapps.net/mcp \
-H "Authorization: Bearer YOUR-SUBDOMAIN:YOUR_GOFLOW_TOKEN:you@yourcompany.com" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
Tools
Rather than one tool per endpoint, three generic tools read the OpenAPI spec at runtime, so the whole API stays reachable. The usual path for anything without a dedicated tool is search → describe → request.
| goflow_capabilities | The reports on offer, and how to ask for each |
| goflow_sales_report | Sales, profit, cost and shipping for a period, by channel/store/item/carrier |
| goflow_sales_trend | The same metrics per day/week/month, with growth and margin direction |
| goflow_forecast | Projected units, sales and profit, with a range |
| goflow_purchase_orders | What's on order, what's landed, what's late |
| goflow_search_help / goflow_read_help | Goflow's user guide: which screen, which menu, which steps |
| goflow_search_endpoints | Find endpoints by keyword |
| goflow_describe_endpoint | Parameters, filters, body/response schema, rate limit |
| goflow_request | Call any endpoint in the spec |
| goflow_list_orders / goflow_get_order | Orders, normalized |
| goflow_cancel_order / goflow_split_order | Order mutations |
| goflow_submit_shipment_feed / goflow_get_shipment_feed_status | Ship-confirm |
| goflow_list_products / goflow_find_product / goflow_create_product | Catalog |
| goflow_submit_inventory_adjustment | Absolute on-hand set |
| goflow_replenishment | What to reorder, how much, and how urgently |
| goflow_list_report_types | Report types and their valid columns |
| goflow_run_report | Generate an inventory report and preview it |
| goflow_get_report / goflow_list_reports | Retrieve reports by id or list them |
| goflow_get_report_quota | Records left in today's report quota |