Atlas / MCP servers / waniwani-ai / @waniwani/sdk

@waniwani/sdkBLOCK

mcp/waniwani-ai/sdk

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.

Verdict
BLOCK
Grade
D
Trust score
62 /100
Exposed tools
7 6r · 1w · 0d
Transport
—
License
MIT
Stars
18
01

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 "@modelcontextproto
Read from source at commit e33b7a27be16OBSERVED · 2026-10-12
Advertisement
02

Connect

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-code
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]
claude-desktop
{
  "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}"
      }
    }
  }
}
03

Exposed tools (7)

6 read · 1 write · 0 destructive.

ToolRiskDescription
book_demoreadBook a demo
brokenread
pricingread
quotereadGet a quote
searchreadSearch
start_bookingwrite
statusread
04

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.

LayerWhat it checksResult
L0Provenance & inventoryWARN
L1Static analysis of the codeWARN
L2Instruction surface (what it tells the agent)FAIL
L3Class-specific surfacePASS
L4Behavioural (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)

CRITICALPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
.agents/skills/project-update/SKILL.md:59
- **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
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
CRITICALPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
skills/instrument-tracking/SKILL.md:34
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
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
HIGHPrompt injection · prompt.credential_read · CWE-94, CWE-1427
.claude/skills/create-flow-app/SKILL.md:3
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
Why it matters. asks the agent to read credentials
HIGHPrompt injection · prompt.credential_read · CWE-94, CWE-1427
skills/waniwani-sdk/SKILL.md:3
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
Why it matters. asks the agent to read credentials
HIGHPrompt injection · prompt.credential_read · CWE-94, CWE-1427
skills/waniwani-sdk/SKILL.md:56
- **Open source, no API key.** `createFlow`, `StateGraph`, `START`, `END`, the `KvStore` interface,
Why it matters. asks the agent to read credentials
MEDIUMInventory / provenance · inv.symlink · CWE-1104
.claude/skills/agent-browser
.claude/skills/agent-browser
Why it matters. link not followed
MEDIUMInventory / provenance · inv.symlink · CWE-1104
.claude/skills/copy
.claude/skills/copy
Why it matters. link not followed
MEDIUMInventory / provenance · inv.symlink · CWE-1104
.claude/skills/deploy-prod
.claude/skills/deploy-prod
Why it matters. link not followed
MEDIUMInventory / provenance · inv.symlink · CWE-1104
.claude/skills/linear-oneshot
.claude/skills/linear-oneshot
Why it matters. link not followed
MEDIUMInventory / provenance · inv.symlink · CWE-1104
.claude/skills/project-planning
.claude/skills/project-planning
Why it matters. link not followed
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
test-page.html:42
data-token="wwp_EGH1pFRzdzIorkPURGUAFEAntiq4YiHP"
LOWInventory / provenance · inv.hidden_file · CWE-1104
.gitleaksignore
.gitleaksignore
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.pre-commit-config.yaml
.pre-commit-config.yaml
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
evals/flows/engine.ts:15
import { createFlow, END, MemoryKvStore, START } from "../../src/mcp";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
evals/flows/fixtures.ts:9
import type { McpServer } from "../../src/mcp";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
evals/flows/fixtures.ts:10
import type { FlowTokenContent } from "../../src/mcp/server/flows/@types";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/chat/web/@types.ts:446
track?: import("../../tracking/@types").TrackFn;
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/chat/web/@types.ts:472
documents?: import("../../documents/types").AttachedDocument[];
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
src/documents/client.test.ts:347
url: "http://127.0.0.1/invoice.pdf",
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
src/tracking/__tests__/integration-v2.test.ts:31
const apiUrl = `http://127.0.0.1:${address.port}`;
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
src/tracking/__tests__/integration-v2.test.ts:113
const apiUrl = `http://127.0.0.1:${address.port}`;
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
src/tracking/__tests__/revenue.test.ts:25
apiUrl: `http://127.0.0.1:${address.port}`,
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
@ai-sdk/mcp, @ai-sdk/react, @biomejs/biome, @modelcontextprotocol/sdk, @storybook/react-vite, @streamdown/cjk, @streamdown/code, @tailwindcss/cli
Why it matters. 34 dependency range(s) float
Fix. pin exact versions or ship a lockfile

Gates applied: critical_finding, no_behavioural_pass, undeclared_transfer.

Audited 2026-10-12 · audit v0.4.1 · source sha e33b7a27be16full audit observations/trust-audit/mcp-server/waniwani-ai__sdk.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-12e33b7a27be16BLOCKD62first audit
06

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.

Advertisement