wealthbox-cli 1.0.2__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.
Files changed (80) hide show
  1. wealthbox_cli-1.0.4/.github/workflows/docs.yml +40 -0
  2. wealthbox_cli-1.0.4/.gitignore +50 -0
  3. wealthbox_cli-1.0.4/CONTRIBUTING.md +104 -0
  4. wealthbox_cli-1.0.4/PKG-INFO +266 -0
  5. wealthbox_cli-1.0.4/README.md +225 -0
  6. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/SECURITY.md +5 -3
  7. wealthbox_cli-1.0.4/docs/changelog.md +116 -0
  8. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/docs/cli-reference.md +1 -1
  9. wealthbox_cli-1.0.4/docs/getting-started.md +110 -0
  10. wealthbox_cli-1.0.4/docs/index.md +77 -0
  11. wealthbox_cli-1.0.4/docs/overrides/main.html +5 -0
  12. wealthbox_cli-1.0.4/docs/promotion.md +135 -0
  13. wealthbox_cli-1.0.4/docs/skills/wealthbox-crm/SKILL.md +68 -0
  14. wealthbox_cli-1.0.4/docs/skills/wealthbox-crm/firm-config.example.md +111 -0
  15. wealthbox_cli-1.0.4/docs/skills/wealthbox-crm/references/contacts.md +151 -0
  16. wealthbox_cli-1.0.4/docs/skills/wealthbox-crm/references/events.md +88 -0
  17. wealthbox_cli-1.0.4/docs/skills/wealthbox-crm/references/households.md +40 -0
  18. wealthbox_cli-1.0.4/docs/skills/wealthbox-crm/references/lookups.md +73 -0
  19. wealthbox_cli-1.0.4/docs/skills/wealthbox-crm/references/notes.md +67 -0
  20. wealthbox_cli-1.0.4/docs/skills/wealthbox-crm/references/opportunities.md +87 -0
  21. wealthbox_cli-1.0.4/docs/skills/wealthbox-crm/references/projects.md +60 -0
  22. wealthbox_cli-1.0.4/docs/skills/wealthbox-crm/references/tasks.md +101 -0
  23. wealthbox_cli-1.0.4/docs/skills/wealthbox-crm/references/workflows.md +90 -0
  24. wealthbox_cli-1.0.4/mkdocs.yml +70 -0
  25. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/pyproject.toml +24 -4
  26. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/src/wealthbox_tools/cli/_util.py +2 -2
  27. wealthbox_cli-1.0.2/.gitignore +0 -216
  28. wealthbox_cli-1.0.2/CONTRIBUTING.md +0 -82
  29. wealthbox_cli-1.0.2/PKG-INFO +0 -260
  30. wealthbox_cli-1.0.2/README.md +0 -229
  31. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/.env.example +0 -0
  32. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/.github/workflows/ci.yml +0 -0
  33. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/LICENSE +0 -0
  34. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/src/wealthbox_tools/__init__.py +0 -0
  35. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/src/wealthbox_tools/cli/__init__.py +0 -0
  36. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/src/wealthbox_tools/cli/_config.py +0 -0
  37. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/src/wealthbox_tools/cli/activity.py +0 -0
  38. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/src/wealthbox_tools/cli/categories.py +0 -0
  39. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/src/wealthbox_tools/cli/config.py +0 -0
  40. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/src/wealthbox_tools/cli/contacts.py +0 -0
  41. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/src/wealthbox_tools/cli/events.py +0 -0
  42. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/src/wealthbox_tools/cli/households.py +0 -0
  43. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/src/wealthbox_tools/cli/main.py +0 -0
  44. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/src/wealthbox_tools/cli/me.py +0 -0
  45. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/src/wealthbox_tools/cli/notes.py +0 -0
  46. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/src/wealthbox_tools/cli/opportunities.py +0 -0
  47. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/src/wealthbox_tools/cli/projects.py +0 -0
  48. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/src/wealthbox_tools/cli/tasks.py +0 -0
  49. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/src/wealthbox_tools/cli/users.py +0 -0
  50. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/src/wealthbox_tools/cli/workflows.py +0 -0
  51. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/src/wealthbox_tools/client/__init__.py +0 -0
  52. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/src/wealthbox_tools/client/activity.py +0 -0
  53. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/src/wealthbox_tools/client/base.py +0 -0
  54. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/src/wealthbox_tools/client/categories.py +0 -0
  55. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/src/wealthbox_tools/client/comments.py +0 -0
  56. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/src/wealthbox_tools/client/contacts.py +0 -0
  57. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/src/wealthbox_tools/client/events.py +0 -0
  58. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/src/wealthbox_tools/client/households.py +0 -0
  59. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/src/wealthbox_tools/client/me.py +0 -0
  60. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/src/wealthbox_tools/client/notes.py +0 -0
  61. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/src/wealthbox_tools/client/opportunities.py +0 -0
  62. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/src/wealthbox_tools/client/projects.py +0 -0
  63. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/src/wealthbox_tools/client/tasks.py +0 -0
  64. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/src/wealthbox_tools/client/users.py +0 -0
  65. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/src/wealthbox_tools/client/workflows.py +0 -0
  66. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/src/wealthbox_tools/models/__init__.py +0 -0
  67. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/src/wealthbox_tools/models/activity.py +0 -0
  68. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/src/wealthbox_tools/models/comments.py +0 -0
  69. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/src/wealthbox_tools/models/common.py +0 -0
  70. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/src/wealthbox_tools/models/contacts.py +0 -0
  71. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/src/wealthbox_tools/models/custom_fields.py +0 -0
  72. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/src/wealthbox_tools/models/enums.py +0 -0
  73. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/src/wealthbox_tools/models/events.py +0 -0
  74. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/src/wealthbox_tools/models/households.py +0 -0
  75. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/src/wealthbox_tools/models/notes.py +0 -0
  76. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/src/wealthbox_tools/models/opportunities.py +0 -0
  77. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/src/wealthbox_tools/models/projects.py +0 -0
  78. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/src/wealthbox_tools/models/tasks.py +0 -0
  79. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/src/wealthbox_tools/models/workflows.py +0 -0
  80. {wealthbox_cli-1.0.2 → wealthbox_cli-1.0.4}/src/wealthbox_tools/py.typed +0 -0
@@ -0,0 +1,40 @@
1
+ name: Deploy docs to GitHub Pages
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ workflow_dispatch:
7
+
8
+ permissions:
9
+ contents: read
10
+ pages: write
11
+ id-token: write
12
+
13
+ concurrency:
14
+ group: "pages"
15
+ cancel-in-progress: true
16
+
17
+ jobs:
18
+ build:
19
+ runs-on: ubuntu-latest
20
+ steps:
21
+ - uses: actions/checkout@v4
22
+ - uses: actions/setup-python@v5
23
+ with:
24
+ python-version: "3.12"
25
+ - run: pip install mkdocs-material
26
+ - run: cp CONTRIBUTING.md docs/contributing.md
27
+ - run: mkdocs build --strict
28
+ - uses: actions/upload-pages-artifact@v3
29
+ with:
30
+ path: site/
31
+
32
+ deploy:
33
+ needs: build
34
+ runs-on: ubuntu-latest
35
+ environment:
36
+ name: github-pages
37
+ url: ${{ steps.deployment.outputs.page_url }}
38
+ steps:
39
+ - id: deployment
40
+ uses: actions/deploy-pages@v4
@@ -0,0 +1,50 @@
1
+ # Python bytecode
2
+ __pycache__/
3
+ *.py[codz]
4
+ *$py.class
5
+ *.so
6
+
7
+ # Distribution / packaging
8
+ build/
9
+ dist/
10
+ *.egg-info/
11
+ *.egg
12
+ .installed.cfg
13
+ MANIFEST
14
+
15
+ # Virtual environments
16
+ .venv/
17
+ venv/
18
+ env/
19
+
20
+ # Environment / secrets
21
+ .env
22
+ .envrc
23
+
24
+ # Testing / coverage
25
+ .pytest_cache/
26
+ .coverage
27
+ .coverage.*
28
+ htmlcov/
29
+ coverage.xml
30
+
31
+ # Type checking
32
+ .mypy_cache/
33
+ .dmypy.json
34
+ .pytype/
35
+
36
+ # Linting
37
+ .ruff_cache/
38
+
39
+ # Editors / IDEs
40
+ .idea/
41
+ .vscode/
42
+
43
+ # MkDocs build output
44
+ site/
45
+
46
+ # Project-specific
47
+ dev/
48
+ .claude/
49
+ CLAUDE.md
50
+ docs/superpowers/
@@ -0,0 +1,104 @@
1
+ # Contributing to Wealthbox CLI
2
+
3
+ Thank you for your interest in contributing to **wealthbox-cli**!
4
+
5
+ ---
6
+
7
+ ## Development Setup
8
+
9
+ ```bash
10
+ git clone https://github.com/massive-value/wealthbox-cli
11
+ cd wealthbox-cli
12
+ python -m venv .venv
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` |
22
+
23
+ Then install with dev dependencies:
24
+
25
+ ```bash
26
+ pip install -e ".[dev]"
27
+ ```
28
+
29
+ Configure your Wealthbox API token (optional — tests don't require a real token):
30
+
31
+ ```bash
32
+ wbox config set-token
33
+ ```
34
+
35
+ ---
36
+
37
+ ## Running Tests
38
+
39
+ ```bash
40
+ pytest
41
+ ```
42
+
43
+ Tests use [respx](https://lundberg.github.io/respx/) to mock HTTP at the transport layer — no real API calls are made.
44
+
45
+ ## Code Style
46
+
47
+ ```bash
48
+ ruff check src/ tests/
49
+ ```
50
+
51
+ - **ruff** for linting (E, F, I rules; 120-char line length)
52
+ - **mypy** in strict mode
53
+
54
+ ---
55
+
56
+ ## Project Architecture
57
+
58
+ Three layers under `src/wealthbox_tools/`:
59
+
60
+ | Layer | Purpose |
61
+ |-------|---------|
62
+ | `cli/` | [Typer](https://typer.tiangolo.com/) commands — user-facing, delegates to client |
63
+ | `client/` | Async HTTP client built from [httpx](https://www.python-httpx.org/) mixins |
64
+ | `models/` | [Pydantic v2](https://docs.pydantic.dev/) models for input validation |
65
+
66
+ `WealthboxClient` (in `client/__init__.py`) inherits from all resource mixins plus `_WealthboxBase` (core HTTP, rate limiting, error handling).
67
+
68
+ ---
69
+
70
+ ## Adding a New Resource
71
+
72
+ 1. Add Pydantic models to `models/<resource>.py` (CreateInput, UpdateInput, ListQuery)
73
+ 2. Add a client mixin to `client/<resource>.py` with async CRUD methods
74
+ 3. Register the mixin in `client/__init__.py`
75
+ 4. Add CLI commands to `cli/<resource>.py`
76
+ 5. Register the CLI sub-app in `cli/main.py`
77
+ 6. Add category types via `make_category_command()` if applicable
78
+ 7. Add tests in `tests/test_<resource>_create.py` and `tests/test_<resource>_update.py`
79
+
80
+ ---
81
+
82
+ ## CI
83
+
84
+ Pull requests and pushes to `main` run GitHub Actions CI:
85
+
86
+ - **Lint:** `ruff check src/ tests/`
87
+ - **Test:** `pytest` across Python 3.11, 3.12, 3.13
88
+
89
+ Both must pass before merging.
90
+
91
+ ---
92
+
93
+ ## Pull Requests
94
+
95
+ - Keep PRs focused — one feature or fix per PR
96
+ - All tests must pass
97
+ - No ruff errors
98
+ - Update the CLI reference docs if commands change
99
+
100
+ ---
101
+
102
+ ## Reporting Issues
103
+
104
+ Open an issue at [github.com/massive-value/wealthbox-cli/issues](https://github.com/massive-value/wealthbox-cli/issues) with steps to reproduce, expected behavior, and actual behavior.
@@ -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
+ [![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 [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
+ [![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 [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).