@partnerwave/cli
v0.1.3
Published
PartnerWave CLI and MCP server — control lead-gen campaigns, business search, contact-form analysis and tiered form submission from the terminal or any local LLM.
Maintainers
Readme
@partnerwave/cli
PartnerWave CLI (pw) + MCP server — control lead-gen campaigns, business search,
contact-form analysis and tiered form submission from your terminal or any local
LLM client (Claude Desktop, Cursor, opencode, etc.).
Install
npm install -g @partnerwave/cliOr run from this repo during development:
cd packages/cli && npm install && npm run build
node dist/index.js --helpLogin
OAuth 2.0 device flow (RFC 8628) — no copy/pasting secrets:
pw login # opens partnerwave.io/device, enter the code shown
pw whoami
pw logoutPrefer static keys? Mint one with pw keys mint after logging in, then use env
vars anywhere (CI / agents):
PARTNERWAVE_API_KEY=pw_live_… pw campaigns list
# or token-based:
PARTNERWAVE_ACCESS_TOKEN=pw_at_… PARTNERWAVE_BASE_URL=https://partnerwave.io pw campaigns listCredentials are stored at ~/.partnerwave/credentials.json (0600). Access tokens
refresh automatically via rotation; expired sessions prompt re-login.
Platform control
pw login|logout|whoami
pw keys list|mint|revoke integration API keys (pw_live_…)
pw campaigns list|get|delete inspect campaigns
pw campaigns settings <id> [--patch '{}']
pw campaigns defaults <id> [--set '{}']
pw search create -k "plumber" --location "Austin TX" \
-c "TX Plumbers" --limit 50 business search into campaign lists
pw results list <listId> page businesses incl. analyze/submit state
pw results delete <listId> --ids a,b
pw lists merge <campaignId> [--dry-run] [--delete-source]
pw lists duplicates <campaignId> [--by website] [--scope owner]
pw forms analyze https://example.com
pw forms submit https://example.com --data '{"name":"…","email":"…"}'
pw forms check-list <listId> queue server-side form checks
pw forms submit-list <listId> submit every analyzed, unsent form in a list
pw forms report <listId> --status submitted --form-url … [--result <id>]
pw blacklist list|add|removeAll output is JSON — pipe into jq or consume from scripts.
MCP server (any local LLM)
pw mcpStdio JSON-RPC exposing PartnerWave tools (pw_search_create, pw_form_analyze,
pw_form_submit_list, pw_submission_report, …). Register in any MCP client:
{
"mcpServers": {
"partnerwave": {
"command": "pw",
"args": ["mcp"]
}
}
}The MCP process shares ~/.partnerwave/credentials.json — run pw login once,
then every LLM session is authenticated.
Environment
| Variable | Purpose |
|---|---|
| PARTNERWAVE_BASE_URL | Override API base (default https://partnerwave.io) |
| PARTNERWAVE_API_KEY | Static integration key instead of OAuth |
| PARTNERWAVE_ACCESS_TOKEN | Explicit access token |
| PARTNERWAVE_CREDENTIALS | Alternate credentials file path |
Rate limits (per key/token) are enforced server-side; the CLI honors
Retry-After on 429s automatically.
