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 dateUnits, orders, gross and net sales across every channel, against the previous period.
Profit reportNet sales less COGS, channel fees and freight — margin by channel, store or warehouse.
Top items sold — quantity, sales, profitThe best (and worst) sellers by units, revenue or profit, with margin per item.
Sales trend — growth or decline over timeSales per day, week or month, with the growth rate and whether it is real or noise.
Profit trend — margin growth or declineGross profit and margin percentage per period, and the direction they are moving.
Cost report — cost increases or decreases over timeCOGS per unit, fees as a share of sales, and freight per order, period by period.
Shipping cost reportWhat freight actually cost against what customers paid for it, by carrier or channel.
Channel performance — profitability trend per channelEach channel's sales, profit and margin over time, side by side.
Restock recommendationsWhat to reorder and how much, from demand, stock on hand and stock already on order.
Purchase order trackerWhat is on order, what has landed, what is overdue, and the value still outstanding.
ForecastProjected 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

  1. Settings → Connectors → Add custom connector.
  2. Paste https://goflow-mcp.u.jpapps.net/mcp as 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.
  3. 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_capabilitiesThe reports on offer, and how to ask for each
goflow_sales_reportSales, profit, cost and shipping for a period, by channel/store/item/carrier
goflow_sales_trendThe same metrics per day/week/month, with growth and margin direction
goflow_forecastProjected units, sales and profit, with a range
goflow_purchase_ordersWhat's on order, what's landed, what's late
goflow_search_help / goflow_read_helpGoflow's user guide: which screen, which menu, which steps
goflow_search_endpointsFind endpoints by keyword
goflow_describe_endpointParameters, filters, body/response schema, rate limit
goflow_requestCall any endpoint in the spec
goflow_list_orders / goflow_get_orderOrders, normalized
goflow_cancel_order / goflow_split_orderOrder mutations
goflow_submit_shipment_feed / goflow_get_shipment_feed_statusShip-confirm
goflow_list_products / goflow_find_product / goflow_create_productCatalog
goflow_submit_inventory_adjustmentAbsolute on-hand set
goflow_replenishmentWhat to reorder, how much, and how urgently
goflow_list_report_typesReport types and their valid columns
goflow_run_reportGenerate an inventory report and preview it
goflow_get_report / goflow_list_reportsRetrieve reports by id or list them
goflow_get_report_quotaRecords left in today's report quota

Before you connect

This can change your live Goflow data. Creating products, cancelling orders, submitting shipment feeds and setting inventory are all real, immediate writes against whatever account your token unlocks. There is no dry-run and no undo. Use a sandbox account if you have one, and read back what the model proposes before you let it write.