| name | white-swan |
| title | White Swan |
| description | White Swan integration. Manage data, records, and automate workflows. Use when the user wants to interact with White Swan data. |
| author | membranedev |
| author_url | https://github.com/membranedev/application-skills/tree/main/skills/white-swan |
| license | MIT |
| version | 0.1.0 |
| execution_mode | open |
| jurisdiction | general |
| practice | general |
| language | en |
White Swan
I don't have enough information about that app to accurately describe it. I need more information to provide a helpful response.
Official docs: https://whiteswan.io/docs
White Swan Overview
- Case
- Contact
- Firm User
- Matter
- Template
- Time Entry
- Vendor
Use action names and parameters as needed.
Working with White Swan
This skill uses the Membrane CLI to interact with White Swan. Membrane handles authentication and credentials refresh automatically — so you can focus on the integration logic rather than auth plumbing.
Install the CLI
Install the Membrane CLI so you can run membrane from the terminal:
npm install -g @membranehq/cli@latest
Authentication
membrane login --tenant --clientName=<agentType>
This will either open a browser for authentication or print an authorization URL to the console, depending on whether interactive mode is available.
Headless environments: The command will print an authorization URL. Ask the user to open it in a browser. When they see a code after completing login, finish with:
membrane login complete <code>
Add --json to any command for machine-readable JSON output.
Agent Types : claude, openclaw, codex, warp, windsurf, etc. Those will be used to adjust tooling to be used best with your harness
Connecting to White Swan
Use membrane connection ensure to find or create a connection by app URL or domain:
membrane connection ensure "https://www.whiteswan.io/" --json
The user completes authentication in the browser. The output contains the new connection id.
This is the fastest way to get a connection. The URL is normalized to a domain and matched against known apps. If no app is found, one is created and a connector is built automatically.
If the returned connection has state: "READY", skip to .