wealthbox-cli 1.0.3__tar.gz → 1.1.0__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.
Files changed (90) hide show
  1. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/.github/workflows/docs.yml +1 -0
  2. wealthbox_cli-1.0.3/docs/contributing.md → wealthbox_cli-1.1.0/CONTRIBUTING.md +13 -4
  3. wealthbox_cli-1.1.0/PKG-INFO +237 -0
  4. wealthbox_cli-1.1.0/README.md +196 -0
  5. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/SECURITY.md +5 -3
  6. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/docs/cli-reference.md +1 -1
  7. wealthbox_cli-1.1.0/docs/overrides/main.html +5 -0
  8. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/mkdocs.yml +2 -0
  9. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/pyproject.toml +1 -1
  10. wealthbox_cli-1.1.0/src/wealthbox_tools/cli/_skill_bootstrap.py +253 -0
  11. wealthbox_cli-1.1.0/src/wealthbox_tools/cli/_skill_platforms.py +96 -0
  12. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/src/wealthbox_tools/cli/_util.py +2 -2
  13. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/src/wealthbox_tools/cli/config.py +15 -3
  14. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/src/wealthbox_tools/cli/main.py +2 -0
  15. wealthbox_cli-1.1.0/src/wealthbox_tools/cli/skills.py +270 -0
  16. {wealthbox_cli-1.0.3/docs → wealthbox_cli-1.1.0/src/wealthbox_tools}/skills/wealthbox-crm/SKILL.md +12 -3
  17. wealthbox_cli-1.1.0/src/wealthbox_tools/skills/wealthbox-crm/bootstrap.md +105 -0
  18. wealthbox_cli-1.1.0/src/wealthbox_tools/skills/wealthbox-crm/firm-examples/contacts.md +21 -0
  19. wealthbox_cli-1.1.0/src/wealthbox_tools/skills/wealthbox-crm/firm-examples/events.md +9 -0
  20. wealthbox_cli-1.1.0/src/wealthbox_tools/skills/wealthbox-crm/firm-examples/notes.md +5 -0
  21. wealthbox_cli-1.1.0/src/wealthbox_tools/skills/wealthbox-crm/firm-examples/opportunities.md +12 -0
  22. wealthbox_cli-1.1.0/src/wealthbox_tools/skills/wealthbox-crm/firm-examples/projects.md +5 -0
  23. wealthbox_cli-1.1.0/src/wealthbox_tools/skills/wealthbox-crm/firm-examples/tasks.md +14 -0
  24. wealthbox_cli-1.1.0/src/wealthbox_tools/skills/wealthbox-crm/firm-examples/workflows.md +31 -0
  25. wealthbox_cli-1.0.3/CONTRIBUTING.md +0 -82
  26. wealthbox_cli-1.0.3/PKG-INFO +0 -316
  27. wealthbox_cli-1.0.3/README.md +0 -275
  28. wealthbox_cli-1.0.3/docs/skills/wealthbox-crm/firm-config.example.md +0 -111
  29. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/.env.example +0 -0
  30. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/.github/workflows/ci.yml +0 -0
  31. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/.gitignore +0 -0
  32. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/LICENSE +0 -0
  33. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/docs/changelog.md +0 -0
  34. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/docs/getting-started.md +0 -0
  35. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/docs/index.md +0 -0
  36. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/docs/promotion.md +0 -0
  37. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/src/wealthbox_tools/__init__.py +0 -0
  38. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/src/wealthbox_tools/cli/__init__.py +0 -0
  39. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/src/wealthbox_tools/cli/_config.py +0 -0
  40. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/src/wealthbox_tools/cli/activity.py +0 -0
  41. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/src/wealthbox_tools/cli/categories.py +0 -0
  42. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/src/wealthbox_tools/cli/contacts.py +0 -0
  43. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/src/wealthbox_tools/cli/events.py +0 -0
  44. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/src/wealthbox_tools/cli/households.py +0 -0
  45. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/src/wealthbox_tools/cli/me.py +0 -0
  46. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/src/wealthbox_tools/cli/notes.py +0 -0
  47. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/src/wealthbox_tools/cli/opportunities.py +0 -0
  48. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/src/wealthbox_tools/cli/projects.py +0 -0
  49. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/src/wealthbox_tools/cli/tasks.py +0 -0
  50. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/src/wealthbox_tools/cli/users.py +0 -0
  51. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/src/wealthbox_tools/cli/workflows.py +0 -0
  52. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/src/wealthbox_tools/client/__init__.py +0 -0
  53. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/src/wealthbox_tools/client/activity.py +0 -0
  54. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/src/wealthbox_tools/client/base.py +0 -0
  55. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/src/wealthbox_tools/client/categories.py +0 -0
  56. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/src/wealthbox_tools/client/comments.py +0 -0
  57. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/src/wealthbox_tools/client/contacts.py +0 -0
  58. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/src/wealthbox_tools/client/events.py +0 -0
  59. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/src/wealthbox_tools/client/households.py +0 -0
  60. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/src/wealthbox_tools/client/me.py +0 -0
  61. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/src/wealthbox_tools/client/notes.py +0 -0
  62. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/src/wealthbox_tools/client/opportunities.py +0 -0
  63. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/src/wealthbox_tools/client/projects.py +0 -0
  64. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/src/wealthbox_tools/client/tasks.py +0 -0
  65. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/src/wealthbox_tools/client/users.py +0 -0
  66. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/src/wealthbox_tools/client/workflows.py +0 -0
  67. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/src/wealthbox_tools/models/__init__.py +0 -0
  68. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/src/wealthbox_tools/models/activity.py +0 -0
  69. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/src/wealthbox_tools/models/comments.py +0 -0
  70. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/src/wealthbox_tools/models/common.py +0 -0
  71. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/src/wealthbox_tools/models/contacts.py +0 -0
  72. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/src/wealthbox_tools/models/custom_fields.py +0 -0
  73. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/src/wealthbox_tools/models/enums.py +0 -0
  74. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/src/wealthbox_tools/models/events.py +0 -0
  75. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/src/wealthbox_tools/models/households.py +0 -0
  76. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/src/wealthbox_tools/models/notes.py +0 -0
  77. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/src/wealthbox_tools/models/opportunities.py +0 -0
  78. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/src/wealthbox_tools/models/projects.py +0 -0
  79. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/src/wealthbox_tools/models/tasks.py +0 -0
  80. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/src/wealthbox_tools/models/workflows.py +0 -0
  81. {wealthbox_cli-1.0.3 → wealthbox_cli-1.1.0}/src/wealthbox_tools/py.typed +0 -0
  82. {wealthbox_cli-1.0.3/docs → wealthbox_cli-1.1.0/src/wealthbox_tools}/skills/wealthbox-crm/references/contacts.md +0 -0
  83. {wealthbox_cli-1.0.3/docs → wealthbox_cli-1.1.0/src/wealthbox_tools}/skills/wealthbox-crm/references/events.md +0 -0
  84. {wealthbox_cli-1.0.3/docs → wealthbox_cli-1.1.0/src/wealthbox_tools}/skills/wealthbox-crm/references/households.md +0 -0
  85. {wealthbox_cli-1.0.3/docs → wealthbox_cli-1.1.0/src/wealthbox_tools}/skills/wealthbox-crm/references/lookups.md +0 -0
  86. {wealthbox_cli-1.0.3/docs → wealthbox_cli-1.1.0/src/wealthbox_tools}/skills/wealthbox-crm/references/notes.md +0 -0
  87. {wealthbox_cli-1.0.3/docs → wealthbox_cli-1.1.0/src/wealthbox_tools}/skills/wealthbox-crm/references/opportunities.md +0 -0
  88. {wealthbox_cli-1.0.3/docs → wealthbox_cli-1.1.0/src/wealthbox_tools}/skills/wealthbox-crm/references/projects.md +0 -0
  89. {wealthbox_cli-1.0.3/docs → wealthbox_cli-1.1.0/src/wealthbox_tools}/skills/wealthbox-crm/references/tasks.md +0 -0
  90. {wealthbox_cli-1.0.3/docs → wealthbox_cli-1.1.0/src/wealthbox_tools}/skills/wealthbox-crm/references/workflows.md +0 -0
@@ -23,6 +23,7 @@ jobs:
23
23
  with:
24
24
  python-version: "3.12"
25
25
  - run: pip install mkdocs-material
26
+ - run: cp CONTRIBUTING.md docs/contributing.md
26
27
  - run: mkdocs build --strict
27
28
  - uses: actions/upload-pages-artifact@v3
28
29
  with:
@@ -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
- source .venv/bin/activate # macOS/Linux
14
- # OR
15
- .venv\Scripts\activate # Windows
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,237 @@
1
+ Metadata-Version: 2.4
2
+ Name: wealthbox-cli
3
+ Version: 1.1.0
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
+ [![PyPI version](https://img.shields.io/pypi/v/wealthbox-cli)](https://pypi.org/project/wealthbox-cli/)
45
+ [![Downloads](https://img.shields.io/pypi/dm/wealthbox-cli)](https://pypi.org/project/wealthbox-cli/)
46
+ [![Python 3.11+](https://img.shields.io/badge/python-3.11%2B-blue)](https://www.python.org/downloads/)
47
+ [![CI](https://img.shields.io/github/actions/workflow/status/massive-value/wealthbox-cli/ci.yml?label=CI)](https://github.com/massive-value/wealthbox-cli/actions/workflows/ci.yml)
48
+ [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](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 skill for [Claude Code](https://claude.ai/download) and [Codex](https://openai.com/codex) that lets AI agents manage your CRM through natural language. Instead of memorizing CLI flags, just describe what you want:
127
+
128
+ ```
129
+ create a contact for Jane Doe, she's a new prospect
130
+ list my tasks due this week
131
+ add a note to contact 123 about today's meeting
132
+ 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 — ideal for advisors who want CRM automation without learning CLI syntax.
136
+
137
+ ### Install
138
+
139
+ One command, same on every OS:
140
+
141
+ ```bash
142
+ pip install wealthbox-cli
143
+ wbox config set-token # paste your Wealthbox API token
144
+ wbox skills install # interactive: pick Claude Code, Codex, or both
145
+ ```
146
+
147
+ The installer asks which platforms to target, copies the skill into the right directory (`~/.claude/skills/` for Claude Code, `~/.codex/skills/` for Codex — with `SKILL.md` renamed to `AGENTS.md` automatically), and offers to bootstrap your firm's customizations from the Wealthbox API.
148
+
149
+ ### First agent run bootstraps itself
150
+
151
+ The first time an agent invokes the skill, it walks you through populating firm-specific conventions — category values, custom fields, users, defaults, required fields, household naming, named workflows. No further CLI commands needed. After that first run, the bootstrap artifacts self-delete from the skill.
152
+
153
+ ### Refresh after firm changes
154
+
155
+ If your firm adds or renames category values, custom fields, or users:
156
+
157
+ ```bash
158
+ wbox skills refresh
159
+ ```
160
+
161
+ This updates the generated half of the skill's firm files; hand-edited policy is preserved.
162
+
163
+ ### Other commands
164
+
165
+ ```bash
166
+ wbox skills list # show where the skill is installed + last bootstrap time
167
+ wbox skills doctor # diagnose install state + token
168
+ wbox skills uninstall # remove the skill
169
+ ```
170
+
171
+ ### Works with other agents too
172
+
173
+ 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 bundled skill just makes Claude Code and Codex aware of the full command surface.
174
+
175
+ ------------------------------------------------------------------------
176
+
177
+ ## Architecture
178
+
179
+ ```
180
+ src/wealthbox_tools/
181
+ cli/ # Typer commands — user-facing, delegates to client
182
+ client/ # Async HTTP client built from mixins
183
+ models/ # Pydantic v2 models for input validation
184
+ ```
185
+
186
+ 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.
187
+
188
+ ------------------------------------------------------------------------
189
+
190
+ ## Contributing
191
+
192
+ ```bash
193
+ git clone https://github.com/massive-value/wealthbox-cli
194
+ cd wealthbox-cli
195
+ python -m venv .venv
196
+ ```
197
+
198
+ Activate the virtual environment:
199
+
200
+ | Platform | Command |
201
+ |----------|---------|
202
+ | macOS/Linux | `source .venv/bin/activate` |
203
+ | Windows (PowerShell) | `.venv\Scripts\Activate.ps1` |
204
+ | Windows (Command Prompt) | `.venv\Scripts\activate.bat` |
205
+
206
+ Then install and test:
207
+
208
+ ```bash
209
+ pip install -e ".[dev]"
210
+ pytest
211
+ ```
212
+
213
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for the full guide.
214
+
215
+ ------------------------------------------------------------------------
216
+
217
+ ## Troubleshooting
218
+
219
+ **401 Unauthorized** — Check your API token. Run `wbox config show` to verify.
220
+
221
+ **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"`.
222
+
223
+ **Writes appear to succeed but nothing changed** — Some category-constrained writes silently no-op. Check valid values first with `wbox contacts categories contact-types`.
224
+
225
+ ------------------------------------------------------------------------
226
+
227
+ ## Disclaimer
228
+
229
+ This is an **unofficial, community-built** tool. It is not affiliated with, endorsed by,
230
+ or supported by Wealthbox or its parent company. "Wealthbox" is a trademark of its
231
+ respective owner. Use of this tool is subject to the [Wealthbox API Terms of Service](https://dev.wealthbox.com).
232
+
233
+ ------------------------------------------------------------------------
234
+
235
+ ## License
236
+
237
+ Apache 2.0 — see [LICENSE](LICENSE).
@@ -0,0 +1,196 @@
1
+ # Wealthbox CLI — Command-Line Client for the Wealthbox CRM API
2
+
3
+ [![PyPI version](https://img.shields.io/pypi/v/wealthbox-cli)](https://pypi.org/project/wealthbox-cli/)
4
+ [![Downloads](https://img.shields.io/pypi/dm/wealthbox-cli)](https://pypi.org/project/wealthbox-cli/)
5
+ [![Python 3.11+](https://img.shields.io/badge/python-3.11%2B-blue)](https://www.python.org/downloads/)
6
+ [![CI](https://img.shields.io/github/actions/workflow/status/massive-value/wealthbox-cli/ci.yml?label=CI)](https://github.com/massive-value/wealthbox-cli/actions/workflows/ci.yml)
7
+ [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](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 skill for [Claude Code](https://claude.ai/download) and [Codex](https://openai.com/codex) that lets AI agents manage your CRM through natural language. Instead of memorizing CLI flags, just describe what you want:
86
+
87
+ ```
88
+ create a contact for Jane Doe, she's a new prospect
89
+ list my tasks due this week
90
+ add a note to contact 123 about today's meeting
91
+ 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 — ideal for advisors who want CRM automation without learning CLI syntax.
95
+
96
+ ### Install
97
+
98
+ One command, same on every OS:
99
+
100
+ ```bash
101
+ pip install wealthbox-cli
102
+ wbox config set-token # paste your Wealthbox API token
103
+ wbox skills install # interactive: pick Claude Code, Codex, or both
104
+ ```
105
+
106
+ The installer asks which platforms to target, copies the skill into the right directory (`~/.claude/skills/` for Claude Code, `~/.codex/skills/` for Codex — with `SKILL.md` renamed to `AGENTS.md` automatically), and offers to bootstrap your firm's customizations from the Wealthbox API.
107
+
108
+ ### First agent run bootstraps itself
109
+
110
+ The first time an agent invokes the skill, it walks you through populating firm-specific conventions — category values, custom fields, users, defaults, required fields, household naming, named workflows. No further CLI commands needed. After that first run, the bootstrap artifacts self-delete from the skill.
111
+
112
+ ### Refresh after firm changes
113
+
114
+ If your firm adds or renames category values, custom fields, or users:
115
+
116
+ ```bash
117
+ wbox skills refresh
118
+ ```
119
+
120
+ This updates the generated half of the skill's firm files; hand-edited policy is preserved.
121
+
122
+ ### Other commands
123
+
124
+ ```bash
125
+ wbox skills list # show where the skill is installed + last bootstrap time
126
+ wbox skills doctor # diagnose install state + token
127
+ wbox skills uninstall # remove the skill
128
+ ```
129
+
130
+ ### Works with other agents too
131
+
132
+ 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 bundled skill just makes Claude Code and Codex aware of the full command surface.
133
+
134
+ ------------------------------------------------------------------------
135
+
136
+ ## Architecture
137
+
138
+ ```
139
+ src/wealthbox_tools/
140
+ cli/ # Typer commands — user-facing, delegates to client
141
+ client/ # Async HTTP client built from mixins
142
+ models/ # Pydantic v2 models for input validation
143
+ ```
144
+
145
+ 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.
146
+
147
+ ------------------------------------------------------------------------
148
+
149
+ ## Contributing
150
+
151
+ ```bash
152
+ git clone https://github.com/massive-value/wealthbox-cli
153
+ cd wealthbox-cli
154
+ python -m venv .venv
155
+ ```
156
+
157
+ Activate the virtual environment:
158
+
159
+ | Platform | Command |
160
+ |----------|---------|
161
+ | macOS/Linux | `source .venv/bin/activate` |
162
+ | Windows (PowerShell) | `.venv\Scripts\Activate.ps1` |
163
+ | Windows (Command Prompt) | `.venv\Scripts\activate.bat` |
164
+
165
+ Then install and test:
166
+
167
+ ```bash
168
+ pip install -e ".[dev]"
169
+ pytest
170
+ ```
171
+
172
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for the full guide.
173
+
174
+ ------------------------------------------------------------------------
175
+
176
+ ## Troubleshooting
177
+
178
+ **401 Unauthorized** — Check your API token. Run `wbox config show` to verify.
179
+
180
+ **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"`.
181
+
182
+ **Writes appear to succeed but nothing changed** — Some category-constrained writes silently no-op. Check valid values first with `wbox contacts categories contact-types`.
183
+
184
+ ------------------------------------------------------------------------
185
+
186
+ ## Disclaimer
187
+
188
+ This is an **unofficial, community-built** tool. It is not affiliated with, endorsed by,
189
+ or supported by Wealthbox or its parent company. "Wealthbox" is a trademark of its
190
+ respective owner. Use of this tool is subject to the [Wealthbox API Terms of Service](https://dev.wealthbox.com).
191
+
192
+ ------------------------------------------------------------------------
193
+
194
+ ## License
195
+
196
+ 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, email **dev.bluehorizon@gmail.com** with:
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`) — see `.env.example` for the correct pattern.
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 [root README](../README.md).
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
 
@@ -0,0 +1,5 @@
1
+ {% extends "base.html" %}
2
+
3
+ {% block extrahead %}
4
+ <meta name="google-site-verification" content="HNCnLPjyOH1a_NjFLsk1jzWwh2bqwwSkZPxuGDz8zRQ" />
5
+ {% endblock %}
@@ -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
@@ -41,6 +42,7 @@ exclude_docs: |
41
42
  promotion.md
42
43
 
43
44
  markdown_extensions:
45
+ - attr_list
44
46
  - admonition
45
47
  - pymdownx.details
46
48
  - pymdownx.superfences
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "wealthbox-cli"
7
- version = "1.0.3"
7
+ version = "1.1.0"
8
8
  description = "CLI and client library for the Wealthbox CRM API"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"