@waniwani/sdkBLOCK
Build distribution MCPs: multi-step conversational funnels (lead gen, booking, quotes) that run as a single MCP tool in ChatGPT, Claude, and Cursor. A typed state graph compiles to one MCP tool.
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
The open-source TypeScript SDK for MCP funnels — multi-step conversational flows (sales, lead generation, booking, quotes) that run as a single MCP tool inside ChatGPT, Claude, Cursor, and any MCP-capable client.
[](https://www.npmjs.com/package/@waniwani/sdk) [](https://www.npmjs.com/package/@waniwani/sdk) [](https://github.com/WaniWani-AI/sdk/commits) [](https://github.com/WaniWani-AI/sdk/pulse) [](https://github.com/WaniWani-AI/sdk/stargazers) [](./LICENSE) [](https://x.com/waniwani_ai)
**Docs** · **Website** · **Dashboard** · **CLI** · **Issues**
One typed state graph compiles to one MCP tool. MIT, bring your own store, optional hosted Platform via one env var.
Forked from production MCPs we shipped for paying customers (insurance quoting, pet care, lead capture, booking), and open-sourced once the shape stabilized.
Install
bun add @waniwani/sdk @modelcontextprotocol/sdk zod
30-second example
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotoe33b7a27be16OBSERVED · 2026-10-12Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add sdk --env AI_GATEWAY_API_KEY=${AI_GATEWAY_API_KEY} --env WANIWANI_API_KEY=${WANIWANI_API_KEY} --env WANIWANI_ENCRYPTION_KEY=${WANIWANI_ENCRYPTION_KEY} -- npx -y @waniwani/[email protected]{
"mcpServers": {
"sdk": {
"command": "npx",
"args": [
"-y",
"@waniwani/[email protected]"
],
"env": {
"AI_GATEWAY_API_KEY": "${AI_GATEWAY_API_KEY}",
"WANIWANI_API_KEY": "${WANIWANI_API_KEY}",
"WANIWANI_ENCRYPTION_KEY": "${WANIWANI_ENCRYPTION_KEY}"
}
}
}
}Exposed tools (7)
6 read · 1 write · 0 destructive.
| Tool | Risk | Description |
|---|---|---|
book_demo | read | Book a demo |
broken | read | |
pricing | read | |
quote | read | Get a quote |
search | read | Search |
start_booking | write | |
status | read |
Trust audit
BLOCKgrade D · trust 62/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | WARN |
| L1 | Static analysis of the code | WARN |
| L2 | Instruction surface (what it tells the agent) | FAIL |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (5 observation(s))
- Network
- declared (5 observation(s))
- Shell
- declared (2 observation(s))
- Dependencies
- not all pinned
- Secrets in source
- found
Findings (23)
- **Linear** — you need Linear MCP tools (list projects/issues, post status updates, save issues). If no Linear tools are available, stop and tell the user: "This skill needs the Linear connector, whi
1. **`lead_qualified` fires at the handoff, not at flow entry.** A lead is qualified when the conversation produces a concrete handoff toward the business: the user is redirected to the pricing page o
description: "Scaffold a new multi-step conversational flow with createFlow from @waniwani/sdk/mcp. Triggers when the user is inside this SDK repo and wants to add a new flow, replace legacy createToo
description: "MCP distribution SDK: build sales funnels, lead generation, booking flows, insurance quote flows, pricing quote flows, and any multi-step conversational MCP app with @waniwani/sdk. Open
- **Open source, no API key.** `createFlow`, `StateGraph`, `START`, `END`, the `KvStore` interface,
.claude/skills/agent-browser
.claude/skills/copy
.claude/skills/deploy-prod
.claude/skills/linear-oneshot
.claude/skills/project-planning
data-token="wwp_EGH1pFRzdzIorkPURGUAFEAntiq4YiHP"
.gitleaksignore
.pre-commit-config.yaml
import { createFlow, END, MemoryKvStore, START } from "../../src/mcp";import type { McpServer } from "../../src/mcp";import type { FlowTokenContent } from "../../src/mcp/server/flows/@types";track?: import("../../tracking/@types").TrackFn;documents?: import("../../documents/types").AttachedDocument[];url: "http://127.0.0.1/invoice.pdf",
const apiUrl = `http://127.0.0.1:${address.port}`;const apiUrl = `http://127.0.0.1:${address.port}`;apiUrl: `http://127.0.0.1:${address.port}`,@ai-sdk/mcp, @ai-sdk/react, @biomejs/biome, @modelcontextprotocol/sdk, @storybook/react-vite, @streamdown/cjk, @streamdown/code, @tailwindcss/cli
Gates applied: critical_finding, no_behavioural_pass, undeclared_transfer.
e33b7a27be16full audit observations/trust-audit/mcp-server/waniwani-ai__sdk.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-12 | e33b7a27be16 | BLOCK | D | 62 | first audit |
Questions
What is the @waniwani/sdk MCP server?
Build distribution MCPs: multi-step conversational funnels (lead gen, booking, quotes) that run as a single MCP tool in ChatGPT, Claude, and Cursor. A typed state graph compiles to one MCP tool.
What tools does @waniwani/sdk expose?
7 in total: 6 read-only, 1 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.
Is @waniwani/sdk safe to connect to an agent?
No — not without reading the findings first. The audit graded it D (62/100) and found 5 critical or high issues in the source. Each one is listed on this page with the file and line it is on.
What credentials does @waniwani/sdk need?
It reads AI_GATEWAY_API_KEY, WANIWANI_API_KEY and WANIWANI_ENCRYPTION_KEY from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How current is this page?
The grade is for one exact copy of the source (e33b7a27be16), read on 2026-10-12. The repository is watched and re-audited when it changes.