wealthbox-cli 1.0.3__tar.gz → 1.0.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/.github/workflows/docs.yml +1 -0
- wealthbox_cli-1.0.3/docs/contributing.md → wealthbox_cli-1.0.4/CONTRIBUTING.md +13 -4
- wealthbox_cli-1.0.4/PKG-INFO +266 -0
- wealthbox_cli-1.0.4/README.md +225 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/SECURITY.md +5 -3
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/docs/cli-reference.md +1 -1
- wealthbox_cli-1.0.4/docs/overrides/main.html +5 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/mkdocs.yml +3 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/pyproject.toml +1 -1
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/src/wealthbox_tools/cli/_util.py +2 -2
- wealthbox_cli-1.0.3/CONTRIBUTING.md +0 -82
- wealthbox_cli-1.0.3/PKG-INFO +0 -316
- wealthbox_cli-1.0.3/README.md +0 -275
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/.env.example +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/.github/workflows/ci.yml +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/.gitignore +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/LICENSE +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/docs/changelog.md +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/docs/getting-started.md +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/docs/index.md +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/docs/promotion.md +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/docs/skills/wealthbox-crm/SKILL.md +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/docs/skills/wealthbox-crm/firm-config.example.md +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/docs/skills/wealthbox-crm/references/contacts.md +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/docs/skills/wealthbox-crm/references/events.md +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/docs/skills/wealthbox-crm/references/households.md +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/docs/skills/wealthbox-crm/references/lookups.md +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/docs/skills/wealthbox-crm/references/notes.md +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/docs/skills/wealthbox-crm/references/opportunities.md +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/docs/skills/wealthbox-crm/references/projects.md +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/docs/skills/wealthbox-crm/references/tasks.md +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/docs/skills/wealthbox-crm/references/workflows.md +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/src/wealthbox_tools/__init__.py +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/src/wealthbox_tools/cli/__init__.py +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/src/wealthbox_tools/cli/_config.py +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/src/wealthbox_tools/cli/activity.py +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/src/wealthbox_tools/cli/categories.py +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/src/wealthbox_tools/cli/config.py +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/src/wealthbox_tools/cli/contacts.py +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/src/wealthbox_tools/cli/events.py +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/src/wealthbox_tools/cli/households.py +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/src/wealthbox_tools/cli/main.py +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/src/wealthbox_tools/cli/me.py +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/src/wealthbox_tools/cli/notes.py +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/src/wealthbox_tools/cli/opportunities.py +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/src/wealthbox_tools/cli/projects.py +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/src/wealthbox_tools/cli/tasks.py +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/src/wealthbox_tools/cli/users.py +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/src/wealthbox_tools/cli/workflows.py +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/src/wealthbox_tools/client/__init__.py +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/src/wealthbox_tools/client/activity.py +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/src/wealthbox_tools/client/base.py +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/src/wealthbox_tools/client/categories.py +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/src/wealthbox_tools/client/comments.py +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/src/wealthbox_tools/client/contacts.py +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/src/wealthbox_tools/client/events.py +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/src/wealthbox_tools/client/households.py +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/src/wealthbox_tools/client/me.py +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/src/wealthbox_tools/client/notes.py +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/src/wealthbox_tools/client/opportunities.py +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/src/wealthbox_tools/client/projects.py +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/src/wealthbox_tools/client/tasks.py +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/src/wealthbox_tools/client/users.py +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/src/wealthbox_tools/client/workflows.py +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/src/wealthbox_tools/models/__init__.py +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/src/wealthbox_tools/models/activity.py +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/src/wealthbox_tools/models/comments.py +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/src/wealthbox_tools/models/common.py +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/src/wealthbox_tools/models/contacts.py +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/src/wealthbox_tools/models/custom_fields.py +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/src/wealthbox_tools/models/enums.py +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/src/wealthbox_tools/models/events.py +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/src/wealthbox_tools/models/households.py +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/src/wealthbox_tools/models/notes.py +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/src/wealthbox_tools/models/opportunities.py +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/src/wealthbox_tools/models/projects.py +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/src/wealthbox_tools/models/tasks.py +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/src/wealthbox_tools/models/workflows.py +0 -0
- {wealthbox_cli-1.0.3 → wealthbox_cli-1.0.4}/src/wealthbox_tools/py.typed +0 -0
|
@@ -10,14 +10,23 @@ Thank you for your interest in contributing to **wealthbox-cli**!
|
|
|
10
10
|
git clone https://github.com/massive-value/wealthbox-cli
|
|
11
11
|
cd wealthbox-cli
|
|
12
12
|
python -m venv .venv
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Activate the virtual environment:
|
|
16
|
+
|
|
17
|
+
| Platform | Command |
|
|
18
|
+
|----------|---------|
|
|
19
|
+
| macOS/Linux | `source .venv/bin/activate` |
|
|
20
|
+
| Windows (PowerShell) | `.venv\Scripts\Activate.ps1` |
|
|
21
|
+
| Windows (Command Prompt) | `.venv\Scripts\activate.bat` |
|
|
16
22
|
|
|
23
|
+
Then install with dev dependencies:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
17
26
|
pip install -e ".[dev]"
|
|
18
27
|
```
|
|
19
28
|
|
|
20
|
-
Configure your Wealthbox API token:
|
|
29
|
+
Configure your Wealthbox API token (optional — tests don't require a real token):
|
|
21
30
|
|
|
22
31
|
```bash
|
|
23
32
|
wbox config set-token
|
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: wealthbox-cli
|
|
3
|
+
Version: 1.0.4
|
|
4
|
+
Summary: CLI and client library for the Wealthbox CRM API
|
|
5
|
+
Project-URL: Homepage, https://github.com/massive-value/wealthbox-cli
|
|
6
|
+
Project-URL: Documentation, https://massive-value.github.io/wealthbox-cli/
|
|
7
|
+
Project-URL: Repository, https://github.com/massive-value/wealthbox-cli
|
|
8
|
+
Project-URL: Issues, https://github.com/massive-value/wealthbox-cli/issues
|
|
9
|
+
Project-URL: Changelog, https://github.com/massive-value/wealthbox-cli/blob/main/CHANGELOG.md
|
|
10
|
+
Author: Kadin Bullock
|
|
11
|
+
License: Apache-2.0
|
|
12
|
+
License-File: LICENSE
|
|
13
|
+
Keywords: api,cli,client-management,command-line,contacts,crm,financial-advisor,fintech,wealth-management,wealthbox
|
|
14
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
15
|
+
Classifier: Environment :: Console
|
|
16
|
+
Classifier: Intended Audience :: Developers
|
|
17
|
+
Classifier: Intended Audience :: Financial and Insurance Industry
|
|
18
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
19
|
+
Classifier: Natural Language :: English
|
|
20
|
+
Classifier: Operating System :: OS Independent
|
|
21
|
+
Classifier: Programming Language :: Python :: 3
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
24
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
25
|
+
Classifier: Topic :: Office/Business
|
|
26
|
+
Classifier: Topic :: Office/Business :: Financial
|
|
27
|
+
Classifier: Typing :: Typed
|
|
28
|
+
Requires-Python: >=3.11
|
|
29
|
+
Requires-Dist: httpx<1.0,>=0.27
|
|
30
|
+
Requires-Dist: pydantic<3.0,>=2.0
|
|
31
|
+
Requires-Dist: python-dotenv<2.0,>=1.0
|
|
32
|
+
Requires-Dist: tabulate<1.0,>=0.9
|
|
33
|
+
Requires-Dist: typer<1.0,>=0.12
|
|
34
|
+
Provides-Extra: dev
|
|
35
|
+
Requires-Dist: mypy>=1.10; extra == 'dev'
|
|
36
|
+
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
|
|
37
|
+
Requires-Dist: pytest>=8.0; extra == 'dev'
|
|
38
|
+
Requires-Dist: respx>=0.21; extra == 'dev'
|
|
39
|
+
Requires-Dist: ruff>=0.4; extra == 'dev'
|
|
40
|
+
Description-Content-Type: text/markdown
|
|
41
|
+
|
|
42
|
+
# Wealthbox CLI — Command-Line Client for the Wealthbox CRM API
|
|
43
|
+
|
|
44
|
+
[](https://pypi.org/project/wealthbox-cli/)
|
|
45
|
+
[](https://pypi.org/project/wealthbox-cli/)
|
|
46
|
+
[](https://www.python.org/downloads/)
|
|
47
|
+
[](https://github.com/massive-value/wealthbox-cli/actions/workflows/ci.yml)
|
|
48
|
+
[](LICENSE)
|
|
49
|
+
|
|
50
|
+
**wealthbox-cli** (`wbox`) is a command-line tool and Python client library for the [Wealthbox CRM](https://www.wealthbox.com/) API. It gives financial advisors, developers, and RIA firms full CRUD access to contacts, tasks, events, notes, households, and more — directly from the terminal. Automate your CRM workflows, export data, and integrate Wealthbox into scripts and CI pipelines.
|
|
51
|
+
|
|
52
|
+
[Documentation](https://massive-value.github.io/wealthbox-cli/) | [PyPI](https://pypi.org/project/wealthbox-cli/) | [Changelog](https://massive-value.github.io/wealthbox-cli/changelog/) | [Wealthbox CRM](https://www.wealthbox.com/) | [Wealthbox API Docs](https://dev.wealthbox.com)
|
|
53
|
+
|
|
54
|
+
> **Disclaimer:** This is an unofficial, community-built tool. It is not affiliated with,
|
|
55
|
+
> endorsed by, or supported by Wealthbox or its parent company. "Wealthbox" is a trademark
|
|
56
|
+
> of its respective owner.
|
|
57
|
+
|
|
58
|
+
------------------------------------------------------------------------
|
|
59
|
+
|
|
60
|
+
## Why Use wealthbox-cli?
|
|
61
|
+
|
|
62
|
+
- **No coding required** — structured CLI flags replace raw JSON and cURL commands
|
|
63
|
+
- **Automate CRM workflows** — script bulk updates, data exports, and scheduled tasks
|
|
64
|
+
- **Multiple output formats** — pipe JSON, CSV, or TSV directly to files or other tools
|
|
65
|
+
- **Built for financial advisors and developers** — covers contacts, households, tasks, events, notes, categories, and custom fields
|
|
66
|
+
- **AI-agent ready** — pair with [Claude Code](https://claude.ai/download) or other coding agents for natural-language CRM automation
|
|
67
|
+
- **Open source** — Apache 2.0 licensed, community-driven, and extensible
|
|
68
|
+
|
|
69
|
+
------------------------------------------------------------------------
|
|
70
|
+
|
|
71
|
+
## Quick Start
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
pip install wealthbox-cli
|
|
75
|
+
wbox config set-token # paste your Wealthbox API token (masked)
|
|
76
|
+
wbox me # verify connection
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
See the [Getting Started](https://massive-value.github.io/wealthbox-cli/getting-started/) guide for pipx install, environment variable auth, and other options.
|
|
80
|
+
|
|
81
|
+
------------------------------------------------------------------------
|
|
82
|
+
|
|
83
|
+
## Usage Examples
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
# List contacts as a table
|
|
87
|
+
wbox contacts list --format table
|
|
88
|
+
|
|
89
|
+
# Create a new client contact
|
|
90
|
+
wbox contacts add person --first-name Jane --last-name Doe --contact-type Client
|
|
91
|
+
|
|
92
|
+
# Export tasks to CSV
|
|
93
|
+
wbox tasks list --format csv > tasks.csv
|
|
94
|
+
|
|
95
|
+
# Create a task linked to a contact
|
|
96
|
+
wbox tasks add "Follow up call" --due-date "2026-04-10T09:00:00-07:00" --contact 12345
|
|
97
|
+
|
|
98
|
+
# Add a meeting note
|
|
99
|
+
wbox notes add "Discussed retirement plan" --contact 12345
|
|
100
|
+
|
|
101
|
+
# Schedule an event
|
|
102
|
+
wbox events add "Annual Review" --starts-at "2026-05-01T10:00:00-07:00" --ends-at "2026-05-01T11:00:00-07:00"
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
For the full command list, see the [CLI Reference](https://massive-value.github.io/wealthbox-cli/cli-reference/).
|
|
106
|
+
|
|
107
|
+
------------------------------------------------------------------------
|
|
108
|
+
|
|
109
|
+
## Supported Resources
|
|
110
|
+
|
|
111
|
+
| Resource | List | Get | Create | Update | Delete |
|
|
112
|
+
|----------|:----:|:---:|:------:|:------:|:------:|
|
|
113
|
+
| Contacts | Yes | Yes | Yes | Yes | Yes |
|
|
114
|
+
| Households | Yes | Yes | Yes | Yes | Yes |
|
|
115
|
+
| Tasks | Yes | Yes | Yes | Yes | Yes |
|
|
116
|
+
| Events | Yes | Yes | Yes | Yes | Yes |
|
|
117
|
+
| Notes | Yes | Yes | Yes | Yes | — |
|
|
118
|
+
| Users | Yes | — | — | — | — |
|
|
119
|
+
| Activity | Yes | — | — | — | — |
|
|
120
|
+
| Categories | Yes | — | — | — | — |
|
|
121
|
+
|
|
122
|
+
------------------------------------------------------------------------
|
|
123
|
+
|
|
124
|
+
## Use with AI Coding Agents
|
|
125
|
+
|
|
126
|
+
wealthbox-cli ships with a [Claude Code](https://claude.ai/download) skill that lets AI agents manage your CRM through natural language. Instead of memorizing CLI flags, just describe what you want:
|
|
127
|
+
|
|
128
|
+
```
|
|
129
|
+
/wealthbox-crm create a contact for Jane Doe, she's a new prospect
|
|
130
|
+
/wealthbox-crm list my tasks due this week
|
|
131
|
+
/wealthbox-crm add a note to contact 123 about today's meeting
|
|
132
|
+
/wealthbox-crm find all contacts tagged "VIP" and export to CSV
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
The skill translates your intent into the correct `wbox` commands, handles flag construction, and validates inputs — making it ideal for advisors who want CRM automation without learning CLI syntax.
|
|
136
|
+
|
|
137
|
+
### Install the skill
|
|
138
|
+
|
|
139
|
+
Download the skill directly from GitHub into your Claude Code skills directory:
|
|
140
|
+
|
|
141
|
+
**macOS/Linux:**
|
|
142
|
+
```bash
|
|
143
|
+
git clone --depth 1 https://github.com/massive-value/wealthbox-cli.git /tmp/wealthbox-cli \
|
|
144
|
+
&& cp -r /tmp/wealthbox-cli/docs/skills/wealthbox-crm ~/.claude/skills/wealthbox-crm \
|
|
145
|
+
&& rm -rf /tmp/wealthbox-cli
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
**Windows (PowerShell):**
|
|
149
|
+
```powershell
|
|
150
|
+
git clone --depth 1 https://github.com/massive-value/wealthbox-cli.git $env:TEMP\wealthbox-cli
|
|
151
|
+
Copy-Item -Recurse $env:TEMP\wealthbox-cli\docs\skills\wealthbox-crm $env:USERPROFILE\.claude\skills\wealthbox-crm
|
|
152
|
+
Remove-Item -Recurse -Force $env:TEMP\wealthbox-cli
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
**Windows (Command Prompt):**
|
|
156
|
+
```cmd
|
|
157
|
+
git clone --depth 1 https://github.com/massive-value/wealthbox-cli.git %TEMP%\wealthbox-cli
|
|
158
|
+
xcopy /E /I %TEMP%\wealthbox-cli\docs\skills\wealthbox-crm %USERPROFILE%\.claude\skills\wealthbox-crm
|
|
159
|
+
rmdir /S /Q %TEMP%\wealthbox-cli
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
If you already have the repo cloned, just copy from your local checkout:
|
|
163
|
+
|
|
164
|
+
**macOS/Linux:**
|
|
165
|
+
```bash
|
|
166
|
+
cp -r docs/skills/wealthbox-crm ~/.claude/skills/wealthbox-crm
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
**Windows (PowerShell):**
|
|
170
|
+
```powershell
|
|
171
|
+
Copy-Item -Recurse docs\skills\wealthbox-crm $env:USERPROFILE\.claude\skills\wealthbox-crm
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
**Windows (Command Prompt):**
|
|
175
|
+
```cmd
|
|
176
|
+
xcopy /E /I docs\skills\wealthbox-crm %USERPROFILE%\.claude\skills\wealthbox-crm
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
### Firm-specific configuration
|
|
180
|
+
|
|
181
|
+
Customize the skill for your firm's defaults, required fields, and naming conventions:
|
|
182
|
+
|
|
183
|
+
**macOS/Linux:**
|
|
184
|
+
```bash
|
|
185
|
+
cp ~/.claude/skills/wealthbox-crm/firm-config.example.md ~/.claude/skills/wealthbox-crm/firm-config.md
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
**Windows (PowerShell):**
|
|
189
|
+
```powershell
|
|
190
|
+
Copy-Item $env:USERPROFILE\.claude\skills\wealthbox-crm\firm-config.example.md $env:USERPROFILE\.claude\skills\wealthbox-crm\firm-config.md
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
**Windows (Command Prompt):**
|
|
194
|
+
```cmd
|
|
195
|
+
copy %USERPROFILE%\.claude\skills\wealthbox-crm\firm-config.example.md %USERPROFILE%\.claude\skills\wealthbox-crm\firm-config.md
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
Edit `firm-config.md` with your firm's conventions. The agent will then apply them automatically — for example, always tagging new contacts with your firm name, setting default contact types, or running multi-step onboarding workflows.
|
|
199
|
+
|
|
200
|
+
### Works with other agents too
|
|
201
|
+
|
|
202
|
+
The `wbox` CLI is a standard command-line tool. Any AI coding agent that can execute shell commands — [Claude Code](https://claude.ai/download), [GitHub Copilot CLI](https://githubnext.com/projects/copilot-cli), [Cursor](https://cursor.sh/), or custom agent frameworks — can use it to read and write Wealthbox data. The included skill just makes Claude Code aware of the full command surface.
|
|
203
|
+
|
|
204
|
+
------------------------------------------------------------------------
|
|
205
|
+
|
|
206
|
+
## Architecture
|
|
207
|
+
|
|
208
|
+
```
|
|
209
|
+
src/wealthbox_tools/
|
|
210
|
+
cli/ # Typer commands — user-facing, delegates to client
|
|
211
|
+
client/ # Async HTTP client built from mixins
|
|
212
|
+
models/ # Pydantic v2 models for input validation
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
Built with [Typer](https://typer.tiangolo.com/), [httpx](https://www.python-httpx.org/), and [Pydantic v2](https://docs.pydantic.dev/). See [Contributing](https://massive-value.github.io/wealthbox-cli/contributing/) for the full architecture guide and how to add new resources.
|
|
216
|
+
|
|
217
|
+
------------------------------------------------------------------------
|
|
218
|
+
|
|
219
|
+
## Contributing
|
|
220
|
+
|
|
221
|
+
```bash
|
|
222
|
+
git clone https://github.com/massive-value/wealthbox-cli
|
|
223
|
+
cd wealthbox-cli
|
|
224
|
+
python -m venv .venv
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
Activate the virtual environment:
|
|
228
|
+
|
|
229
|
+
| Platform | Command |
|
|
230
|
+
|----------|---------|
|
|
231
|
+
| macOS/Linux | `source .venv/bin/activate` |
|
|
232
|
+
| Windows (PowerShell) | `.venv\Scripts\Activate.ps1` |
|
|
233
|
+
| Windows (Command Prompt) | `.venv\Scripts\activate.bat` |
|
|
234
|
+
|
|
235
|
+
Then install and test:
|
|
236
|
+
|
|
237
|
+
```bash
|
|
238
|
+
pip install -e ".[dev]"
|
|
239
|
+
pytest
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for the full guide.
|
|
243
|
+
|
|
244
|
+
------------------------------------------------------------------------
|
|
245
|
+
|
|
246
|
+
## Troubleshooting
|
|
247
|
+
|
|
248
|
+
**401 Unauthorized** — Check your API token. Run `wbox config show` to verify.
|
|
249
|
+
|
|
250
|
+
**Date format errors** — Use ISO 8601: `"2026-04-01T10:00:00-07:00"` or `"2026-04-01T10:00:00Z"`. Date-only fields use `"YYYY-MM-DD"`.
|
|
251
|
+
|
|
252
|
+
**Writes appear to succeed but nothing changed** — Some category-constrained writes silently no-op. Check valid values first with `wbox contacts categories contact-types`.
|
|
253
|
+
|
|
254
|
+
------------------------------------------------------------------------
|
|
255
|
+
|
|
256
|
+
## Disclaimer
|
|
257
|
+
|
|
258
|
+
This is an **unofficial, community-built** tool. It is not affiliated with, endorsed by,
|
|
259
|
+
or supported by Wealthbox or its parent company. "Wealthbox" is a trademark of its
|
|
260
|
+
respective owner. Use of this tool is subject to the [Wealthbox API Terms of Service](https://dev.wealthbox.com).
|
|
261
|
+
|
|
262
|
+
------------------------------------------------------------------------
|
|
263
|
+
|
|
264
|
+
## License
|
|
265
|
+
|
|
266
|
+
Apache 2.0 — see [LICENSE](LICENSE).
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
# Wealthbox CLI — Command-Line Client for the Wealthbox CRM API
|
|
2
|
+
|
|
3
|
+
[](https://pypi.org/project/wealthbox-cli/)
|
|
4
|
+
[](https://pypi.org/project/wealthbox-cli/)
|
|
5
|
+
[](https://www.python.org/downloads/)
|
|
6
|
+
[](https://github.com/massive-value/wealthbox-cli/actions/workflows/ci.yml)
|
|
7
|
+
[](LICENSE)
|
|
8
|
+
|
|
9
|
+
**wealthbox-cli** (`wbox`) is a command-line tool and Python client library for the [Wealthbox CRM](https://www.wealthbox.com/) API. It gives financial advisors, developers, and RIA firms full CRUD access to contacts, tasks, events, notes, households, and more — directly from the terminal. Automate your CRM workflows, export data, and integrate Wealthbox into scripts and CI pipelines.
|
|
10
|
+
|
|
11
|
+
[Documentation](https://massive-value.github.io/wealthbox-cli/) | [PyPI](https://pypi.org/project/wealthbox-cli/) | [Changelog](https://massive-value.github.io/wealthbox-cli/changelog/) | [Wealthbox CRM](https://www.wealthbox.com/) | [Wealthbox API Docs](https://dev.wealthbox.com)
|
|
12
|
+
|
|
13
|
+
> **Disclaimer:** This is an unofficial, community-built tool. It is not affiliated with,
|
|
14
|
+
> endorsed by, or supported by Wealthbox or its parent company. "Wealthbox" is a trademark
|
|
15
|
+
> of its respective owner.
|
|
16
|
+
|
|
17
|
+
------------------------------------------------------------------------
|
|
18
|
+
|
|
19
|
+
## Why Use wealthbox-cli?
|
|
20
|
+
|
|
21
|
+
- **No coding required** — structured CLI flags replace raw JSON and cURL commands
|
|
22
|
+
- **Automate CRM workflows** — script bulk updates, data exports, and scheduled tasks
|
|
23
|
+
- **Multiple output formats** — pipe JSON, CSV, or TSV directly to files or other tools
|
|
24
|
+
- **Built for financial advisors and developers** — covers contacts, households, tasks, events, notes, categories, and custom fields
|
|
25
|
+
- **AI-agent ready** — pair with [Claude Code](https://claude.ai/download) or other coding agents for natural-language CRM automation
|
|
26
|
+
- **Open source** — Apache 2.0 licensed, community-driven, and extensible
|
|
27
|
+
|
|
28
|
+
------------------------------------------------------------------------
|
|
29
|
+
|
|
30
|
+
## Quick Start
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
pip install wealthbox-cli
|
|
34
|
+
wbox config set-token # paste your Wealthbox API token (masked)
|
|
35
|
+
wbox me # verify connection
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
See the [Getting Started](https://massive-value.github.io/wealthbox-cli/getting-started/) guide for pipx install, environment variable auth, and other options.
|
|
39
|
+
|
|
40
|
+
------------------------------------------------------------------------
|
|
41
|
+
|
|
42
|
+
## Usage Examples
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
# List contacts as a table
|
|
46
|
+
wbox contacts list --format table
|
|
47
|
+
|
|
48
|
+
# Create a new client contact
|
|
49
|
+
wbox contacts add person --first-name Jane --last-name Doe --contact-type Client
|
|
50
|
+
|
|
51
|
+
# Export tasks to CSV
|
|
52
|
+
wbox tasks list --format csv > tasks.csv
|
|
53
|
+
|
|
54
|
+
# Create a task linked to a contact
|
|
55
|
+
wbox tasks add "Follow up call" --due-date "2026-04-10T09:00:00-07:00" --contact 12345
|
|
56
|
+
|
|
57
|
+
# Add a meeting note
|
|
58
|
+
wbox notes add "Discussed retirement plan" --contact 12345
|
|
59
|
+
|
|
60
|
+
# Schedule an event
|
|
61
|
+
wbox events add "Annual Review" --starts-at "2026-05-01T10:00:00-07:00" --ends-at "2026-05-01T11:00:00-07:00"
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
For the full command list, see the [CLI Reference](https://massive-value.github.io/wealthbox-cli/cli-reference/).
|
|
65
|
+
|
|
66
|
+
------------------------------------------------------------------------
|
|
67
|
+
|
|
68
|
+
## Supported Resources
|
|
69
|
+
|
|
70
|
+
| Resource | List | Get | Create | Update | Delete |
|
|
71
|
+
|----------|:----:|:---:|:------:|:------:|:------:|
|
|
72
|
+
| Contacts | Yes | Yes | Yes | Yes | Yes |
|
|
73
|
+
| Households | Yes | Yes | Yes | Yes | Yes |
|
|
74
|
+
| Tasks | Yes | Yes | Yes | Yes | Yes |
|
|
75
|
+
| Events | Yes | Yes | Yes | Yes | Yes |
|
|
76
|
+
| Notes | Yes | Yes | Yes | Yes | — |
|
|
77
|
+
| Users | Yes | — | — | — | — |
|
|
78
|
+
| Activity | Yes | — | — | — | — |
|
|
79
|
+
| Categories | Yes | — | — | — | — |
|
|
80
|
+
|
|
81
|
+
------------------------------------------------------------------------
|
|
82
|
+
|
|
83
|
+
## Use with AI Coding Agents
|
|
84
|
+
|
|
85
|
+
wealthbox-cli ships with a [Claude Code](https://claude.ai/download) skill that lets AI agents manage your CRM through natural language. Instead of memorizing CLI flags, just describe what you want:
|
|
86
|
+
|
|
87
|
+
```
|
|
88
|
+
/wealthbox-crm create a contact for Jane Doe, she's a new prospect
|
|
89
|
+
/wealthbox-crm list my tasks due this week
|
|
90
|
+
/wealthbox-crm add a note to contact 123 about today's meeting
|
|
91
|
+
/wealthbox-crm find all contacts tagged "VIP" and export to CSV
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
The skill translates your intent into the correct `wbox` commands, handles flag construction, and validates inputs — making it ideal for advisors who want CRM automation without learning CLI syntax.
|
|
95
|
+
|
|
96
|
+
### Install the skill
|
|
97
|
+
|
|
98
|
+
Download the skill directly from GitHub into your Claude Code skills directory:
|
|
99
|
+
|
|
100
|
+
**macOS/Linux:**
|
|
101
|
+
```bash
|
|
102
|
+
git clone --depth 1 https://github.com/massive-value/wealthbox-cli.git /tmp/wealthbox-cli \
|
|
103
|
+
&& cp -r /tmp/wealthbox-cli/docs/skills/wealthbox-crm ~/.claude/skills/wealthbox-crm \
|
|
104
|
+
&& rm -rf /tmp/wealthbox-cli
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
**Windows (PowerShell):**
|
|
108
|
+
```powershell
|
|
109
|
+
git clone --depth 1 https://github.com/massive-value/wealthbox-cli.git $env:TEMP\wealthbox-cli
|
|
110
|
+
Copy-Item -Recurse $env:TEMP\wealthbox-cli\docs\skills\wealthbox-crm $env:USERPROFILE\.claude\skills\wealthbox-crm
|
|
111
|
+
Remove-Item -Recurse -Force $env:TEMP\wealthbox-cli
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
**Windows (Command Prompt):**
|
|
115
|
+
```cmd
|
|
116
|
+
git clone --depth 1 https://github.com/massive-value/wealthbox-cli.git %TEMP%\wealthbox-cli
|
|
117
|
+
xcopy /E /I %TEMP%\wealthbox-cli\docs\skills\wealthbox-crm %USERPROFILE%\.claude\skills\wealthbox-crm
|
|
118
|
+
rmdir /S /Q %TEMP%\wealthbox-cli
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
If you already have the repo cloned, just copy from your local checkout:
|
|
122
|
+
|
|
123
|
+
**macOS/Linux:**
|
|
124
|
+
```bash
|
|
125
|
+
cp -r docs/skills/wealthbox-crm ~/.claude/skills/wealthbox-crm
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
**Windows (PowerShell):**
|
|
129
|
+
```powershell
|
|
130
|
+
Copy-Item -Recurse docs\skills\wealthbox-crm $env:USERPROFILE\.claude\skills\wealthbox-crm
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
**Windows (Command Prompt):**
|
|
134
|
+
```cmd
|
|
135
|
+
xcopy /E /I docs\skills\wealthbox-crm %USERPROFILE%\.claude\skills\wealthbox-crm
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### Firm-specific configuration
|
|
139
|
+
|
|
140
|
+
Customize the skill for your firm's defaults, required fields, and naming conventions:
|
|
141
|
+
|
|
142
|
+
**macOS/Linux:**
|
|
143
|
+
```bash
|
|
144
|
+
cp ~/.claude/skills/wealthbox-crm/firm-config.example.md ~/.claude/skills/wealthbox-crm/firm-config.md
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
**Windows (PowerShell):**
|
|
148
|
+
```powershell
|
|
149
|
+
Copy-Item $env:USERPROFILE\.claude\skills\wealthbox-crm\firm-config.example.md $env:USERPROFILE\.claude\skills\wealthbox-crm\firm-config.md
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
**Windows (Command Prompt):**
|
|
153
|
+
```cmd
|
|
154
|
+
copy %USERPROFILE%\.claude\skills\wealthbox-crm\firm-config.example.md %USERPROFILE%\.claude\skills\wealthbox-crm\firm-config.md
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
Edit `firm-config.md` with your firm's conventions. The agent will then apply them automatically — for example, always tagging new contacts with your firm name, setting default contact types, or running multi-step onboarding workflows.
|
|
158
|
+
|
|
159
|
+
### Works with other agents too
|
|
160
|
+
|
|
161
|
+
The `wbox` CLI is a standard command-line tool. Any AI coding agent that can execute shell commands — [Claude Code](https://claude.ai/download), [GitHub Copilot CLI](https://githubnext.com/projects/copilot-cli), [Cursor](https://cursor.sh/), or custom agent frameworks — can use it to read and write Wealthbox data. The included skill just makes Claude Code aware of the full command surface.
|
|
162
|
+
|
|
163
|
+
------------------------------------------------------------------------
|
|
164
|
+
|
|
165
|
+
## Architecture
|
|
166
|
+
|
|
167
|
+
```
|
|
168
|
+
src/wealthbox_tools/
|
|
169
|
+
cli/ # Typer commands — user-facing, delegates to client
|
|
170
|
+
client/ # Async HTTP client built from mixins
|
|
171
|
+
models/ # Pydantic v2 models for input validation
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
Built with [Typer](https://typer.tiangolo.com/), [httpx](https://www.python-httpx.org/), and [Pydantic v2](https://docs.pydantic.dev/). See [Contributing](https://massive-value.github.io/wealthbox-cli/contributing/) for the full architecture guide and how to add new resources.
|
|
175
|
+
|
|
176
|
+
------------------------------------------------------------------------
|
|
177
|
+
|
|
178
|
+
## Contributing
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
git clone https://github.com/massive-value/wealthbox-cli
|
|
182
|
+
cd wealthbox-cli
|
|
183
|
+
python -m venv .venv
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
Activate the virtual environment:
|
|
187
|
+
|
|
188
|
+
| Platform | Command |
|
|
189
|
+
|----------|---------|
|
|
190
|
+
| macOS/Linux | `source .venv/bin/activate` |
|
|
191
|
+
| Windows (PowerShell) | `.venv\Scripts\Activate.ps1` |
|
|
192
|
+
| Windows (Command Prompt) | `.venv\Scripts\activate.bat` |
|
|
193
|
+
|
|
194
|
+
Then install and test:
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
pip install -e ".[dev]"
|
|
198
|
+
pytest
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for the full guide.
|
|
202
|
+
|
|
203
|
+
------------------------------------------------------------------------
|
|
204
|
+
|
|
205
|
+
## Troubleshooting
|
|
206
|
+
|
|
207
|
+
**401 Unauthorized** — Check your API token. Run `wbox config show` to verify.
|
|
208
|
+
|
|
209
|
+
**Date format errors** — Use ISO 8601: `"2026-04-01T10:00:00-07:00"` or `"2026-04-01T10:00:00Z"`. Date-only fields use `"YYYY-MM-DD"`.
|
|
210
|
+
|
|
211
|
+
**Writes appear to succeed but nothing changed** — Some category-constrained writes silently no-op. Check valid values first with `wbox contacts categories contact-types`.
|
|
212
|
+
|
|
213
|
+
------------------------------------------------------------------------
|
|
214
|
+
|
|
215
|
+
## Disclaimer
|
|
216
|
+
|
|
217
|
+
This is an **unofficial, community-built** tool. It is not affiliated with, endorsed by,
|
|
218
|
+
or supported by Wealthbox or its parent company. "Wealthbox" is a trademark of its
|
|
219
|
+
respective owner. Use of this tool is subject to the [Wealthbox API Terms of Service](https://dev.wealthbox.com).
|
|
220
|
+
|
|
221
|
+
------------------------------------------------------------------------
|
|
222
|
+
|
|
223
|
+
## License
|
|
224
|
+
|
|
225
|
+
Apache 2.0 — see [LICENSE](LICENSE).
|
|
@@ -4,7 +4,9 @@
|
|
|
4
4
|
|
|
5
5
|
Please **do not** open a public GitHub issue for security vulnerabilities.
|
|
6
6
|
|
|
7
|
-
Instead,
|
|
7
|
+
Instead, use [GitHub's private vulnerability reporting](https://github.com/massive-value/wealthbox-cli/security/advisories/new) to submit your report. This keeps the details confidential until a fix is available.
|
|
8
|
+
|
|
9
|
+
Include:
|
|
8
10
|
|
|
9
11
|
- A description of the vulnerability
|
|
10
12
|
- Steps to reproduce
|
|
@@ -16,9 +18,9 @@ You will receive a response within 5 business days. If the issue is confirmed, a
|
|
|
16
18
|
|
|
17
19
|
Your Wealthbox API token grants access to your CRM data. Keep it safe:
|
|
18
20
|
|
|
19
|
-
- **Never commit your token to version control.** Use `.env` (already in `.gitignore`)
|
|
21
|
+
- **Never commit your token to version control.** Use `.env` (already in `.gitignore`) or `wbox config set-token` to store it securely.
|
|
20
22
|
- **Never share your token** in issues, PRs, or chat.
|
|
21
|
-
- If a token is accidentally exposed, regenerate it immediately in your Wealthbox account settings
|
|
23
|
+
- If a token is accidentally exposed, regenerate it immediately in your Wealthbox account settings under **Settings > API Access**.
|
|
22
24
|
|
|
23
25
|
## Scope
|
|
24
26
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# CLI Command Reference
|
|
2
2
|
|
|
3
|
-
Full command reference for the `wbox` CLI. For project overview, installation, and configuration see the [
|
|
3
|
+
Full command reference for the `wbox` CLI. For project overview, installation, and configuration see the [Getting Started](getting-started.md) guide.
|
|
4
4
|
|
|
5
5
|
------------------------------------------------------------------------
|
|
6
6
|
|
|
@@ -10,6 +10,7 @@ edit_uri: edit/main/docs/
|
|
|
10
10
|
|
|
11
11
|
theme:
|
|
12
12
|
name: material
|
|
13
|
+
custom_dir: docs/overrides
|
|
13
14
|
palette:
|
|
14
15
|
- media: "(prefers-color-scheme: light)"
|
|
15
16
|
scheme: default
|
|
@@ -39,8 +40,10 @@ plugins:
|
|
|
39
40
|
|
|
40
41
|
exclude_docs: |
|
|
41
42
|
promotion.md
|
|
43
|
+
skills/
|
|
42
44
|
|
|
43
45
|
markdown_extensions:
|
|
46
|
+
- attr_list
|
|
44
47
|
- admonition
|
|
45
48
|
- pymdownx.details
|
|
46
49
|
- pymdownx.superfences
|
|
@@ -280,14 +280,14 @@ def _extract_collection(data: Any) -> tuple[list[dict] | None, int | None]: # t
|
|
|
280
280
|
def _render_table(rows: list[dict], headers: list[str], total_count: int | None) -> tuple[str, str | None]: # type: ignore[type-arg]
|
|
281
281
|
from tabulate import tabulate
|
|
282
282
|
table_data = [[row.get(h, "") for h in headers] for row in rows]
|
|
283
|
-
rendered = tabulate(table_data, headers=headers, tablefmt="
|
|
283
|
+
rendered = tabulate(table_data, headers=headers, tablefmt="grid")
|
|
284
284
|
footer = f"Showing {len(rows)} of {total_count} results" if total_count is not None else None
|
|
285
285
|
return rendered, footer
|
|
286
286
|
|
|
287
287
|
|
|
288
288
|
def _render_kv_table(record: dict) -> str: # type: ignore[type-arg]
|
|
289
289
|
from tabulate import tabulate
|
|
290
|
-
return tabulate(list(record.items()), headers=["Field", "Value"], tablefmt="
|
|
290
|
+
return tabulate(list(record.items()), headers=["Field", "Value"], tablefmt="grid")
|
|
291
291
|
|
|
292
292
|
|
|
293
293
|
def _render_dsv(rows: list[dict], headers: list[str], sep: str) -> str: # type: ignore[type-arg]
|