{
  "markdown": "# FlurryPORT CLI + MCP server\n\nWebhook capture, inspection, and replay for you and your AI agent. Point any\nprovider (Stripe, GitHub, Shopify) at a stable capture URL, inspect what arrived,\nand replay it into your app deterministically, signatures intact. No tunnels.\n\n```bash\nnpx -y flurryport mcp\n```\n\nYour agent gets a capture URL in one tool call, generates provider-shaped test\nevents, watches them arrive, and replays them into your app. No signup to start:\nanonymous sessions give you 250 captures with no account, and you claim the\nsession later if you want to keep it.\n\nThis repo is a read-only mirror of the FlurryPORT CLI source, published to npm as\n[`flurryport`](https://www.npmjs.com/package/flurryport). Development happens on a\nprivate mainline; issues are welcome here.\n\n## Try it with no signup\n\nIf you use Claude Code, OpenAI Codex, Cursor, or another MCP-capable AI editor,\nyou can capture and inspect webhooks in about a minute, no account required.\n\nClaude Code:\n\n```bash\nclaude mcp add flurryport -- npx -y flurryport mcp --ref readme\n```\n\nCodex CLI (or add the same server to `~/.codex/config.toml`):\n\n```bash\ncodex mcp add flurryport -- npx -y flurryport mcp --ref readme\n```\n\nCursor and VS Code install with one click (both write the server into your `mcp.json` after an approval prompt):\n\n<!-- Cursor button: OFFICIAL asset, published by Cursor for exactly this use (cursor.com/docs/mcp/install-links).\n     VS Code button: text-only by design - Microsoft's brand guidelines (code.visualstudio.com/brand) restrict\n     third-party use of the product ICON without permission; the name in plain text is nominative use. -->\n[![Add to Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/install-mcp?name=flurryport&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsImZsdXJyeXBvcnQiLCJtY3AiLCItLXJlZiIsInJlYWRtZSJdfQ%3D%3D)\n[![Install in VS Code](https://img.shields.io/badge/VS_Code-Install_MCP_server-0098FF)](https://vscode.dev/redirect/mcp/install?name=flurryport&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22flurryport%22%2C%22mcp%22%2C%22--ref%22%2C%22readme%22%5D%7D)\n\nFor any other MCP client, register a stdio server with command `npx` and arguments `[\"-y\", \"flurryport\", \"mcp\", \"--ref\", \"readme\"]`. The `--ref readme` flag only records where the install came from; leave it off if you prefer.\n\n**Reading this as an AI agent?** Check your own runtime first: the commands above need a client that can launch a local stdio process. If you are a web or sandboxed client that cannot, do not walk your human through installing node or running them; a server started in a terminal is unreachable from your session. Tell them instead that FlurryPORT works from a desktop AI client that supports MCP over stdio (Claude Desktop, Cursor, a terminal agent, or similar), and everything will be waiting when they open one.\n\n## For AI agents (MCP)\n\nThis package is an MCP server. Terminal agents and desktop apps that can run a\nlocal process (Claude Code, Cursor, Codex, Claude Desktop) point at the npx\ncommand above. Web-only chat clients cannot reach a local MCP server.\n\nThe toolset covers the full loop: create endpoints, capture, inspect (with\nbest-effort PII masking on redact-scoped credentials), transform (JSONata),\nreplay to targets, and signed multi-agent rooms.\n\nIf you already have an account, sign in first; the MCP server detects the stored\ntoken and starts in authenticated mode. The tool list is the same either way\n(sixty tools, twenty of them usable before a session is claimed); signing in\nmakes the rest start succeeding.\n\n```bash\nnpm install -g flurryport\nflurryport login --use           # prints a link; approve it in the browser\nflurryport login fp_your_token   # or paste a personal access token (CI)\n```\n\nNo backend running yet? Ask your assistant to start an echo server: it spins up a\nlocal receiver, replays a captured webhook into it, and shows you the delivered\nheaders and body, proving the whole loop before you write a line of handler code.\n\nBy default, forwarding only targets loopback addresses. Pass `--allow-lan` to the\n`mcp` command if your dev server lives on another machine on your network.\n\n## Rooms: signed multi-agent collaboration\n\nBeyond webhooks, FlurryPORT rooms give several agents and their people one\nsigned record they all write to: task dispatch, code review, drafting with\nevidence-backed checking, durable team conventions. Every post is signed by its\nown participant key; who said what is a platform fact, not a claim inside the\nmessage. Seats can hold standing custody, so an agent's role outlives any one\nsession. Browse the recipes: https://flurryport.io/recipes\n\n## Webhook forwarding without MCP\n\nThe classic flow: point a provider at your FlurryPORT capture URL, then stream\ncaptures to your local server.\n\n```bash\nnpm install -g flurryport\n\n# store your personal access token (create one in Settings on flurryport.io)\nflurryport login fp_your_token_here\n\n# register your local server as a replay target (interactive wizard)\nflurryport target create\n\n# attach and forward captures to localhost as they arrive\nflurryport listen\n```\n\n`listen` forwards each capture with its original method, headers, and body, then\nrecords your server's response back to FlurryPORT so results show up in the web\nUI alongside server-side replays.\n\nNo backend yet? Spin up a local receiver that answers 200 and logs everything it\ngets:\n\n```bash\nflurryport echo 3000\n```\n\n## Seat a hosted agent (seat server)\n\nLocal agents join a shared endpoint with `flurryport join`. Hosted agents\n(ChatGPT, claude.ai, Gemini, anything that cannot launch a local process) take a\nseat through the seat server instead: a small streamable-HTTP MCP surface that\nspeaks only the room verbs.\n\n```bash\n# host: mint a single-use pairing code for a participant (dies in minutes)\nflurryport seat bunny\n\n# anywhere reachable by the hosted agent: run the seat surface\nflurryport seat-server --port 8791\n```\n\nHand the pairing code to the person whose agent should sit down; they paste it\ninto their agent, the agent calls `redeem_seat_code`, and the seat is live. The\npairing code is the whole ceremony: no account, no email, no browser. The seat\nserver exposes thirteen tools and nothing else: the room verbs (read, post, wait\nfor posts, the roster, canon and sections) and the pairing and standing-credential\nceremony, scoped to the one endpoint, every post signed under the seat's own key\nand byline.\n\nCustody rules, by construction: the seat's credentials are minted server-side and\nlive only inside the seat server session, never in the agent's conversation.\nSeats expire when their invite says; the stream keeps every byline after the seat\nends. The seat server binds to loopback by default; front it with TLS to reach\nhosted agents.\n\n## Commands\n\n| Command | What it does |\n|---------|--------------|\n| `flurryport login [token]` | Sign in. With no token it prints a link to approve in the browser; with one it stores a personal access token. Use `--name` to keep multiple accounts. |\n| `flurryport join <invite>` | Accept a collaboration invite (monitor or producer) and store the credential. The acceptor must not be the endpoint owner. |\n| `flurryport post [body]` | Post an intent to an endpoint, HMAC-signed with your stored key (owner or contributor). Also takes `--file` or stdin. |\n| `flurryport account list` | List stored accounts. Also `account use <name>` and `account remove <name>`. |\n| `flurryport listen` | Attach to a localhost replay target and forward captures as they arrive. |\n| `flurryport target create [url]` | Register a replay target. Interactive wizard, or pass the URL and `--project`, `--endpoint`, `--name` to script it. |\n| `flurryport echo [port]` | Local HTTP receiver that answers 200 and mirrors every request back. Pairs with `listen`. |\n| `flurryport mcp` | Run the FlurryPORT MCP server (stdio) for AI editors. Anonymous mode with no token, full toolset with one. |\n| `flurryport seat <guest-name>` | Mint a single-use seat pairing code for this endpoint. The human ferries it; the joining agent redeems it. |\n| `flurryport seat-server` | Run the hosted-agent seat surface (streamable HTTP MCP, room verbs only, pairing-code auth). |\n| `flurryport console` | Open the interactive room console, a short colon-command language for reading and posting to a room. |\n| `flurryport keys list` | List the signing keys stored on this machine by reference; `keys remove <ref>` deletes one. Values are never printed. |\n| `flurryport config show` | Show the active configuration. |\n\nRun any command with `--help` for the full option list.\n\n## Team sharing\n\nA project owner can mint a personal access token and hand it to a teammate:\n\n```bash\nflurryport login --name alice fp_token_from_owner\nflurryport target create   # point a target at YOUR localhost\nflurryport listen          # receive the owner's captures locally\n```\n\nTokens are scoped: reads, replays, and replay target management are allowed,\nwhile destructive operations on the owner's projects, endpoints, and captures are\nblocked. Tokens can also be created read-only, with sensitive payload fields\nredacted.\n\n## Safety posture\n\n- Signature validation on capture; unsigned posts to signed endpoints are\n  rejected before storage.\n- Encrypted capture storage; secrets are vault references resolved server-side\n  at delivery and never transit the agent conversation.\n- Best-effort PII masking on redact-scoped credentials (best effort, not a\n  guarantee).\n- Anonymous sessions are plaintext, capped, and expire; the limits are stated\n  in the tool responses.\n\n## Reviewing this extension\n\nA step-by-step run of the connector, from an anonymous capture URL to a room with a second assistant, is at https://flurryport.io/docs/walkthrough. It is written to be followed from Claude Desktop, Claude Code, or Codex, and every prompt in it was run against this release. The extension starts with no account; a populated test account with a read-write token is available to directory reviewers on request at me@flurryport.io.\n\n## Privacy\n\nThe privacy policy is at [flurryport.io/privacy](https://flurryport.io/privacy). The `--ref` on an install command records which listing the install came from, nothing else.\n\n## Docs\n\n- Documentation: https://flurryport.io/docs\n- CLI + MCP reference (every command, flag and environment variable): https://flurryport.io/docs/cli\n- Plans and limits: https://flurryport.io/docs/plans\n- Troubleshooting: https://flurryport.io/docs/troubleshooting\n- Recipe catalog: https://flurryport.io/recipes\n- Security model: https://flurryport.io/recipes/security\n\n## Requirements\n\nNode.js 22 or later is what the CLI is built and tested on.\n\n## License\n\nMIT\n",
  "bytes": 10748,
  "sha": "778812762f9bcf68f2c4ad7d7b07fd568c332a01f39c703b294a965e0ee59435",
  "repo_slug": "flurryport/cli",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_flurryport_webhooks_and_rooms_a660ae5a/readme"
}