{
  "markdown": "# fluf-mcp — FLUF Connect for AI agents\n\nA [Model Context Protocol](https://modelcontextprotocol.io) server that lets an AI\nagent (Claude, Cursor, Windsurf, Cline, and anything else that speaks MCP) work a\n[FLUF Connect](https://fluf.io) account: read inventory, list items across\nmarketplaces, read orders, ask FLUF's own assistant a question, and raise a\nsupport ticket.\n\nOne account, one token, every marketplace you've connected — the agent never has\nto learn a per-marketplace API, and never handles your marketplace credentials.\n\nSix **tools** are the primitives. Five **recipes** are the outcomes — named\nworkflows that chain the tools in the right order, surfaced in your client as\nslash commands. Most people want a recipe.\n\n## Recipes\n\nRecipes ship as MCP prompts. In Claude Desktop and Claude Code they appear as\nslash commands; in Cursor and other clients, in the prompt picker.\n\n| Recipe             | Outcome | Arguments |\n| ------------------ | ------- | --------- |\n| `dead_stock`       | Finds stock that isn't listed on the channels actually selling for you, ranked by what to crosslist first. | `period`, `limit` |\n| `morning_sales`    | Yesterday's trading in ninety seconds: orders, revenue, channel mix, what changed against a fair baseline. | `date`, `compare` |\n| `listing_failures` | Investigates failed and stuck listings, groups them by root cause, and proposes a fix per cause. | `channel`, `period` |\n| `expansion`        | Decides what to seed onto a newly connected marketplace, chosen to match what already sells for you. | `channel` *(required)*, `batch_size` |\n| `support`          | Diagnoses a problem through Intesa, then files a support ticket with the evidence attached. | `problem` *(required)* |\n\nEvery argument is optional unless marked, and every recipe has a sensible\ndefault — `/dead_stock` on its own works.\n\n```\n/dead_stock period=\"30 days\" limit=10\n/morning_sales compare=previous_week\n/expansion channel=vinted batch_size=25\n```\n\nTwo things the recipes are deliberately strict about, because getting them wrong\nis how an agent loses a seller's trust:\n\n- **Nothing gets listed without confirmation.** `dead_stock` and `expansion`\n  research and recommend; they call `crosslist` only after you say yes.\n- **Queued is reported as queued.** Extension-first channels finish in your own\n  browser, so an item can be accepted but not yet live. The recipes say so\n  rather than claiming success, and they don't re-push (a repeat can duplicate\n  the listing).\n\n## Tools\n\n| Tool            | What it does |\n| --------------- | ------------ |\n| `list_channels` | Which marketplaces this account has connected, and which it can list to. |\n| `list_products` | Your products, with the channels each one is already live on. |\n| `crosslist`     | List one or more products on one or more marketplaces. |\n| `get_orders`    | Your orders across every connected marketplace, in one shape. |\n| `ask_intesa`    | Ask FLUF's own assistant an open-ended question about your account — why a channel stopped syncing, what a listing error means, what sold and where. |\n| `report_bug`    | Raise a bug with FLUF support on your behalf — either when you report a problem, or when the agent itself gets stuck and can't finish the job. |\n\n## Get a token\n\nCreate one at <https://fluf.io/connect/developers> — in FLUF Connect that's\n**More → Developers** in the left sidebar. It's shown once, so store it like a\npassword. Revoke it on the same screen any time.\n\nYou need a FLUF Connect account on an active plan; the API is a paid feature.\n\n## Install\n\nTwo ways in. Pick the first unless you have a reason not to.\n\n### Claude Desktop — one click, no Node (recommended)\n\nDownload **`fluf-mcp-<version>.mcpb`** from the\n[latest release](https://github.com/FLUF-io/fluf-mcp/releases/latest) and open it.\nClaude Desktop shows an install dialog, asks for your token in a form field, and\nthat's it — no terminal, no JSON, and **no Node install**: Claude Desktop ships\nits own Node runtime and uses it for installed bundles.\n\n### Everything else — npx\n\nFor Cursor, Claude Code, Windsurf, Cline, or if you'd rather manage it yourself.\n**This route does need [Node](https://nodejs.org) 18+ on your machine** — the\nruntime bundled with Claude Desktop is only used for installed `.mcpb` bundles,\nnot for `claude_desktop_config.json` entries, which spawn `command` from your\nsystem PATH.\n\n```bash\nnpm install -g fluf-mcp\n```\n\n## Configure\n\nOnly needed for the npx route — the `.mcpb` bundle configures itself.\n\n### Claude Desktop\n\n`~/Library/Application Support/Claude/claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"fluf\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"fluf-mcp\"],\n      \"env\": { \"FLUF_API_TOKEN\": \"fluf_pat_...\" }\n    }\n  }\n}\n```\n\n### Claude Code\n\n```bash\nclaude mcp add fluf --env FLUF_API_TOKEN=fluf_pat_... -- npx -y fluf-mcp\n```\n\n### Cursor\n\n`~/.cursor/mcp.json` (or a per-project `.cursor/mcp.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"fluf\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"fluf-mcp\"],\n      \"env\": { \"FLUF_API_TOKEN\": \"fluf_pat_...\" }\n    }\n  }\n}\n```\n\n### Environment variables\n\n| Var              | Required | Default           | Notes |\n| ---------------- | -------- | ----------------- | ----- |\n| `FLUF_API_TOKEN` | yes      | —                 | Your personal access token. |\n| `FLUF_BASE_URL`  | no       | `https://fluf.io` | Override for staging. |\n\n## Using it\n\nReach for a [recipe](#recipes) when you want an outcome — they encode the tool\norder and the caveats. Otherwise ask in plain language and the agent picks the\ntools:\n\n> \"What have I got in stock that isn't on eBay yet? List the ten cheapest.\"\n\n> \"Show me everything that sold last week and which channel it sold on.\"\n\n> \"Why did my last five Vinted listings fail?\"\n\nThree things worth knowing:\n\n- **Always call `list_channels` first.** The available marketplaces differ per\n  account and change over time; don't hardcode a list.\n- **`crosslist` is not always instant.** Some channels are handed to your own\n  browser session to complete, so the response may say *queued* rather than\n  *listed*. Read the per-channel status; don't assume success.\n- **`ask_intesa` is the slow, clever one.** It hands the question to Intesa, the\n  assistant inside FLUF, which runs its own multi-step investigation before\n  answering — so it can explain *why* something happened, not just report what\n  is. Replies can take up to a minute. Use the direct tools for simple reads;\n  reach for this when the question is diagnostic or open-ended.\n\n## Develop\n\n```bash\nnpm install\nnpm run build\nFLUF_API_TOKEN=... node dist/index.js\n```\n\nSmoke-test without an MCP client:\n\n```bash\necho '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/list\"}' \\\n  | FLUF_API_TOKEN=... node dist/index.js\n\necho '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"prompts/list\"}' \\\n  | FLUF_API_TOKEN=... node dist/index.js\n```\n\nRecipes live in [`src/prompts.ts`](src/prompts.ts) — one entry in `RECIPES` per\nrecipe, no registration step. They're plain text aimed at the agent, so editing\none needs no client change.\n\n## Support\n\n<info@fluf.io>\n\n## License\n\nMIT — see [LICENSE](LICENSE). © FLUF.io.\n\nThe server itself is open; the account it talks to is not. You'll still need a FLUF\nConnect account on an active plan for any of it to do anything.\n",
  "bytes": 7312,
  "sha": "2dff502b82aa3fd8e3bf5ffa52439b01a92492fbcc6c6db76bb90660eed19518",
  "repo_slug": "fluf-io/fluf-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_fluf_mcp_1dd24ae5/readme"
}