causly-server 1.5.0 → 1.5.1

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 (3) hide show
  1. package/CHANGELOG.md +12 -7
  2. package/README.md +290 -118
  3. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -2,17 +2,21 @@
2
2
 
3
3
  All notable changes to this project are documented here.
4
4
 
5
- ## [Unreleased]
6
-
7
- ### Added
8
- - Opt-in BoundaryAttest Interop Profile v0.2 `server_attested` receipts for the `ship_change`, `verify_ci_fix`, and `deploy_project` workflow boundary, with RFC 8785/JCS redacted evidence hashes, independent expected-key verification, and focused tests. BoundaryAttest v0.1 remains legacy-only.
5
+ ## [1.5.1]
9
6
 
10
7
  ### Changed
11
- - The central wrapper now owns each operation ID and supplies it to the existing audit logger so an optional receipt and normal audit event share one correlation identity. Approval and security semantics are unchanged.
8
+ - New README for the npm package: install-first quick start, architecture diagram, demo GIF, tool pack tables, configuration, Google setup, security and privacy, troubleshooting and FAQ.
9
+ - `.env.example`: the Google setup comments now describe the `causly-server login google` flow.
12
10
 
13
11
  ## [1.5.0]
14
12
 
15
13
  ### Added
14
+ - **npm package and CLI**: `npm install -g causly-server`, then `causly-server init | setup | keys | doctor [--test] | status | toolsets | backup | restore | login google | remove`. `init` adds the server to Claude Desktop, Cursor and Windsurf.
15
+ - **Lazy tool packs**: files, directory, command and project load first; other packs load on demand. `search_tools`, `load_toolset` and `use_tool` let an agent find and call any tool without restarting the editor. `toolsets` controls which packs load at startup.
16
+ - **Co-founder packs**: research (2 tools), leads (3), SEO and content (4, including Search Console), pipeline (9, local SQLite), calendar (8), Telegram (5), Linear (7), meetings (9: Groq Whisper transcription, action items, deal and calendar links, call prep) and reminders (3, delivered to Telegram).
17
+ - **Safety and local data**: opt-in workspace limit (`init --workspace`), approval gate for risky actions, and a local SQLite store under `~/.causly` with `backup` and `restore`.
18
+ - **Google sign-in**: `causly-server login google` for Gmail, Calendar and Search Console.
19
+ - Opt-in BoundaryAttest Interop Profile v0.2 `server_attested` receipts for the `ship_change`, `verify_ci_fix`, and `deploy_project` workflow boundary, with RFC 8785/JCS redacted evidence hashes, independent expected-key verification, and focused tests. BoundaryAttest v0.1 remains legacy-only.
16
20
  - **Notion — new category, 15 tools**: search, page/database CRUD, block append/read/update/delete, comments, users. All live-tested against a real shared Notion page.
17
21
  - **Terraform — new category, 20 tools**: full lifecycle (init/validate/fmt/plan/apply/destroy/show/output/workspace), state management (state_list/show/mv/rm/pull/import/taint/untaint), graph/providers, and a CI/CD hook (`terraform_plan_comment` — posts a plan summary as a GitHub PR comment). 17/20 live-tested.
18
22
  - **Docker — new category, 18 tools**: ps/images/build/run/stop/start/restart/rm/rmi/logs/inspect/exec/stats/push/pull/compose up-down. Cross-platform — tries `docker` directly first, falls back to `wsl docker` on Windows-only-WSL setups, with automatic Windows-path-to-WSL-path translation for build context, volumes, and compose working directory. 17/18 live-tested.
@@ -20,12 +24,13 @@ All notable changes to this project are documented here.
20
24
  - **Local encrypted secrets manager — new category, 6 tools**: set/get/list/delete/rotate_key/generate_key. AES-256-GCM, local file store, no external service required. All 6 live-tested including a full key-rotation cycle.
21
25
  - **Sentry monitoring — new category, 8 tools**: list_projects/list_issues/search_issues/get_issue/resolve_issue/ignore_issue/get_project_stats/add_comment. 5/8 live-tested.
22
26
 
23
- Total: 181 tools, up from 106.
27
+ Total: 230+ tools, up from 106.
24
28
 
25
29
  ### Changed
30
+ - The central wrapper now owns each operation ID and supplies it to the existing audit logger so an optional receipt and normal audit event share one correlation identity. Approval and security semantics are unchanged.
26
31
  - **License: PolyForm Noncommercial 1.0.0 → MIT.** Added `"license": "MIT"` to `package.json`.
27
32
  - Removed the temporary `register/` staging folder now that all tool registrations live directly in `index.js`.
28
- - Simplified `setup.js` — dropped interactive token prompting (tokens are documented/edited directly in `.env`), kept the cross-platform Claude Desktop config auto-update.
33
+ - Removed the legacy `setup.js` helper (`causly-server init` replaces it) and moved the docs site and landing code out of this repo.
29
34
  - Updated `CONTRIBUTING.md` and `ROADMAP.md` to reflect the new tool categories and the current Azure/GCP/AWS-deferred stance.
30
35
 
31
36
  ### Fixed
package/README.md CHANGED
@@ -1,133 +1,174 @@
1
- # Causly Server — Turn Any AI Agent Into Your Technical Co-Founder
1
+ # Causly Server
2
2
 
3
- [![npm](https://img.shields.io/npm/v/causly-server.svg)](https://www.npmjs.com/package/causly-server)
4
- [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](./LICENSE)
5
- [![CI](https://github.com/KNIHAL/causly-server/actions/workflows/ci.yml/badge.svg)](https://github.com/KNIHAL/causly-server/actions/workflows/ci.yml)
6
- [![PRs welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](./CONTRIBUTING.md)
3
+ **The open-source MCP server that turns any AI agent into your technical co-founder.**
7
4
 
8
- **An open-source MCP server that gives your AI agent the tools of a co-founder: ship code, find leads, track deals, take meeting notes, handle email and your calendar, all from one conversation.**
5
+ <p>
6
+ <a href="https://www.npmjs.com/package/causly-server"><img src="https://img.shields.io/npm/v/causly-server.svg?color=FF9A1F" alt="npm version"></a>
7
+ <a href="./LICENSE"><img src="https://img.shields.io/badge/License-MIT-blue.svg" alt="MIT license"></a>
8
+ <a href="https://github.com/KNIHAL/causly-server/actions/workflows/ci.yml"><img src="https://github.com/KNIHAL/causly-server/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
9
+ <img src="https://img.shields.io/badge/node-%E2%89%A5%2020-339933.svg" alt="Node 20 or newer">
10
+ <a href="./CONTRIBUTING.md"><img src="https://img.shields.io/badge/PRs-welcome-brightgreen.svg" alt="PRs welcome"></a>
11
+ </p>
9
12
 
10
- Your agent stops being a chatbot that writes text and starts doing the work: it reads your repo, opens the pull request, finds companies that are hiring, logs them in your pipeline, books the follow-up, and reminds you on Telegram.
11
-
12
- Everything runs on your machine. Your keys, your data, your approval for anything risky.
13
-
14
- ## See It In Action
15
-
16
- [Working Demo](https://github.com/user-attachments/assets/7f4f33e8-2cd4-4c99-ada0-35653bbaa4c4)
17
-
18
- <img width="1920" height="1020" alt="Causly Server screenshot" src="https://github.com/user-attachments/assets/e9fb7c22-0a0b-4109-a44d-d2106912389f" />
19
-
20
- ## What You Can Ask
21
-
22
- Once it is installed, just talk to your agent:
23
-
24
- - "Find companies hiring React developers and add the best three to my pipeline."
25
- - "Save notes from my call with Acme: they want a demo next week, follow up on Friday."
26
- - "What is due this week? Include meeting action items and reminders."
27
- - "Prep me for my next meeting."
28
- - "Ship this change: run the checks, open a pull request, and tell me when CI is green."
29
- - "Audit this page for SEO and suggest keywords."
30
- - "Find a free slot with this lead on Thursday and send the invite."
31
-
32
- ## Install
33
-
34
- Requires Node.js 20 or newer.
13
+ Most agents can write text. Causly Server gives them hands: they ship code, hunt for clients, track deals, take meeting notes, handle your calendar and remind you on Telegram, all from one conversation, all on your own machine.
35
14
 
36
15
  ```bash
37
16
  npm install -g causly-server
38
17
  causly-server init
39
18
  ```
40
19
 
41
- `init` finds Claude Desktop, Cursor and Windsurf on your machine and adds Causly Server to each. Restart your editor and you are done. Using Claude Code instead? `init` prints the one-line command for it.
20
+ <p align="center">
21
+ <img src="https://raw.githubusercontent.com/KNIHAL/causly-server/master/docs/images/demo.gif" alt="Install, init and doctor in under ten seconds" width="85%">
22
+ </p>
23
+
24
+ ## Contents
25
+
26
+ - [Why Causly Server](#why-causly-server)
27
+ - [Quick start](#quick-start)
28
+ - [What you can ask](#what-you-can-ask)
29
+ - [How it works](#how-it-works)
30
+ - [Tool packs](#tool-packs)
31
+ - [Workflow tools](#workflow-tools)
32
+ - [Configuration](#configuration)
33
+ - [Google setup](#google-setup-gmail-calendar-search-console)
34
+ - [Works with](#works-with)
35
+ - [Security and privacy](#security-and-privacy)
36
+ - [Command reference](#command-reference)
37
+ - [Troubleshooting](#troubleshooting)
38
+ - [FAQ](#faq)
39
+ - [Compatibility](#compatibility)
40
+ - [Contributing, roadmap, license](#contributing-roadmap-license)
41
+
42
+ ## Why Causly Server
43
+
44
+ A founder's week is not only code. It is also finding clients, following up, remembering what was promised in a call, and shipping without breaking things. Causly Server puts all of that behind one MCP server.
45
+
46
+ - **One server for build, sell, operate and grow.** Git, GitHub, CI and deploys, but also leads, a sales pipeline, meeting notes, calendar, reminders and SEO.
47
+ - **Memory that survives the chat.** Your pipeline, meetings and reminders live in a local SQLite file, so the agent can pick up tomorrow where it stopped today.
48
+ - **Local-first.** Keys and data stay on your machine. There is no Causly cloud in the loop.
49
+ - **Safe by default.** Risky actions need explicit confirmation, file access can be limited to one folder, and secrets are redacted from logs.
50
+ - **Light on your agent's context.** Tools load in packs on demand instead of flooding the agent with hundreds of definitions.
51
+ - **One command setup.** `init` finds Claude Desktop, Cursor and Windsurf and wires them up.
52
+
53
+ ## Quick start
54
+
55
+ Requires Node.js 20 or newer.
42
56
 
43
- Useful options:
57
+ **1. Install**
44
58
 
45
59
  ```bash
46
- causly-server init --client cursor # pick editors instead of auto-detecting
47
- causly-server init --workspace D:\my-project # limit file tools to one folder
48
- causly-server init --toolsets research,pipeline,meetings # choose startup packs
60
+ npm install -g causly-server
49
61
  ```
50
62
 
51
- ### Add your API keys
52
-
53
- You only need keys for the services you actually use.
63
+ **2. Connect your editors**
54
64
 
55
65
  ```bash
56
- causly-server setup # step by step, each key is checked live
57
- causly-server doctor --test # verify every configured service
58
- causly-server status # one screen: editors, keys, pipeline, reminders, updates
66
+ causly-server init
59
67
  ```
60
68
 
61
- Keys are stored in `~/.causly/.env` (hidden prompt, never printed back) and picked up without a restart.
69
+ `init` adds Causly Server to Claude Desktop, Cursor and Windsurf, whichever you have. It also prints the one-line command for Claude Code. Restart the editor afterwards.
62
70
 
63
- ## Google Setup (Gmail, Calendar, Search Console)
64
-
65
- Google needs a one-time OAuth client that you own. It takes about five minutes.
66
-
67
- 1. Open [Google Cloud Console](https://console.cloud.google.com), create or pick a project.
68
- 2. Enable the APIs you want: **Gmail API**, **Google Calendar API**, and optionally **Google Search Console API**.
69
- 3. Go to **Google Auth Platform**. Under **Branding**, fill in the app name and your support email. Under **Audience**, choose **External** and add your own Google account as a test user.
70
- 4. Go to **Clients → Create client** and choose **Desktop app** as the application type. (A "Web application" client fails with `redirect_uri_mismatch`.) Copy the client ID and secret.
71
- 5. Save them in Causly: `causly-server setup`, or `causly-server keys set GMAIL_CLIENT_ID` and `causly-server keys set GMAIL_CLIENT_SECRET`.
72
- 6. Sign in once in your browser:
71
+ **3. Check everything**
73
72
 
74
73
  ```bash
75
- causly-server login google # Gmail and Calendar
76
- causly-server login google all # also Search Console
74
+ causly-server doctor
77
75
  ```
78
76
 
79
- ### Avoid the 7-day token expiry: Publish the app
77
+ **4. Add keys for the services you use (optional)**
80
78
 
81
- While the Google app is in **Testing** status, Google expires the sign-in token every 7 days. You can renew it any time with `causly-server login google`.
82
-
83
- To stop that for good, go to **Google Auth Platform → Audience** and click **Publish app** (set it to *In production*). This needs the Branding page from step 3 to be filled in first. For personal use you do not need Google verification; at sign-in you will see an "unverified app" warning, which is expected for your own client: choose **Advanced**, then continue.
84
-
85
- ## Tool Packs
79
+ ```bash
80
+ causly-server setup
81
+ ```
86
82
 
87
- Tools are grouped in packs and loaded lazily, so your agent is never flooded with hundreds of tool definitions. The packs below load at startup:
83
+ Files, git, shell, Docker and Terraform work with no keys at all. Add keys only for the services you want. Each key is checked live as you enter it.
88
84
 
89
- | Pack | What it does |
90
- | --- | --- |
91
- | **files, directory, command, project** | Read, write, edit and search files; run commands with safety checks; detect your stack and run build, test, lint and typecheck |
92
- | **research** | Search the web and read pages as clean text |
93
- | **leads** | Find companies hiring (Hacker News, remote job boards) and public company contact details |
94
- | **pipeline** | Local sales pipeline: leads, deals, contacts, activity log, report, CSV export |
95
- | **meetings** | Transcribe recordings, save summaries, track action items, link them to deals and calendar events, prep for calls |
96
- | **reminders** | Follow-ups saved locally; ask what is due |
97
- | **seo** | Keyword ideas, page audit, draft check, Search Console |
85
+ Useful `init` options:
98
86
 
99
- More packs are one command away and load on demand:
87
+ ```bash
88
+ causly-server init --client cursor # pick editors instead of auto-detecting
89
+ causly-server init --workspace D:\my-project # limit file tools to one folder
90
+ causly-server init --toolsets research,pipeline,meetings # choose which packs load at startup
91
+ ```
100
92
 
101
- | Pack | What it does |
102
- | --- | --- |
103
- | **calendar, gmail** | Events, free/busy, find meeting slots; search, read, send, reply, forward |
104
- | **telegram** | Alert yourself, read messages sent to your bot |
105
- | **git, github, workflow** | Full Git; repos, issues, pull requests, reviews, Actions; `ship_change`, `fix_ci`, `verify_ci_fix`, `deploy_project` |
106
- | **vercel, docker, terraform** | Deployments and health checks; containers and Compose; plan, apply, state |
107
- | **database, supabase** | Postgres and MySQL queries and schema; Supabase projects and SQL |
108
- | **slack, notion, linear** | Channels and threads; pages and databases; issues |
109
- | **sentry, secrets** | Issue triage; encrypted local secrets store |
93
+ ## What you can ask
110
94
 
111
- That is 230+ tools in total. Choose which packs load at startup:
95
+ - "Find companies hiring React developers and add the best three to my pipeline."
96
+ - "Save notes from my call with Acme: they want a demo next week, follow up on Friday."
97
+ - "What is due this week? Include meeting action items and reminders."
98
+ - "Prep me for my next meeting." (needs Google Calendar)
99
+ - "Transcribe this recording and list the action items." (needs a Groq key)
100
+ - "Ship this change: run the checks, open a pull request, tell me when CI is green."
101
+ - "Audit this page for SEO and suggest keywords."
102
+ - "Find a free slot on Thursday and create the event."
103
+
104
+ ## How it works
105
+
106
+ <p align="center">
107
+ <img src="https://raw.githubusercontent.com/KNIHAL/causly-server/master/docs/images/architecture.png" alt="Architecture: your AI agent talks MCP to Causly Server, which has a tool router, a safety layer, tool packs and a local store, and calls your services over their APIs." width="100%">
108
+ </p>
109
+
110
+ Your agent talks to Causly Server over MCP (stdio). Inside the server:
111
+
112
+ 1. **Tool router.** `search_tools`, `load_toolset` and `use_tool` let the agent find a tool and call it by name. Packs load on demand, and `use_tool` works even in editors that do not refresh their tool list mid-chat, so you do not need to restart.
113
+ 2. **Safety layer.** Permission levels, confirmation for risky actions, an optional workspace limit, secret redaction and an activity log.
114
+ 3. **Tool packs.** About 230 tools grouped into packs (below).
115
+ 4. **Local store.** SQLite for pipeline, meetings and reminders in `~/.causly`, encrypted secrets, and your API keys in `~/.causly/.env`.
116
+ 5. **Your services.** GitHub, Vercel, Docker, Terraform, Postgres, Slack, Notion, Linear, Gmail, Google Calendar, Telegram and more, reached with your own keys.
117
+
118
+ ## Tool packs
119
+
120
+ These packs load at startup by default:
121
+
122
+ | Pack | Tools | What it does |
123
+ | --- | --- | --- |
124
+ | files | 9 | Read, write, edit, copy, move and inspect files |
125
+ | directory | 5 | List, create and delete directories; search file names |
126
+ | command | 1 | Run shell commands with safety checks |
127
+ | project | 7 | Detect project type and health; run build, tests, lint and typecheck |
128
+ | research | 2 | Search the web and read pages as clean text |
129
+ | leads | 3 | Find companies hiring (Hacker News, remote job boards) and public company contact details |
130
+ | pipeline | 9 | Local sales pipeline: leads, deals, contacts, activity log, report, CSV export |
131
+ | meetings | 9 | Transcribe recordings, save summaries, track action items, link to deals and calendar, prep for calls |
132
+ | reminders | 3 | Follow-ups saved locally; ask what is due |
133
+
134
+ These load on demand, or you can add them to startup with `causly-server toolsets add <name>`:
135
+
136
+ | Pack | Tools | What it does |
137
+ | --- | --- | --- |
138
+ | calendar | 8 | Google Calendar: events, free/busy, find meeting slots, create, update, delete |
139
+ | gmail | 8 | Search, read, send, reply and forward |
140
+ | telegram | 5 | Alert yourself, read messages sent to your bot |
141
+ | seo | 4 | Keyword ideas, page audit, draft check, Search Console |
142
+ | git | 20 | Status, diff, commit, branch, merge, stash, tags, remotes |
143
+ | github | 27 | Repos, issues, pull requests, reviews, Actions |
144
+ | workflow | 4 | `ship_change`, `fix_ci`, `verify_ci_fix`, `deploy_project` |
145
+ | vercel | 11 | Projects, deployments, HTTP health checks |
146
+ | docker | 18 | Build, run, logs, images, exec, Compose |
147
+ | terraform | 20 | Init, plan, apply, state, workspaces, PR plan comments |
148
+ | database | 8 | Postgres and MySQL queries and schema inspection |
149
+ | supabase | 6 | Projects, organizations and SQL |
150
+ | slack | 8 | Channels, messages and threads |
151
+ | notion | 15 | Pages, databases, blocks and comments |
152
+ | linear | 7 | List, read, create, update and comment on issues |
153
+ | sentry | 8 | Projects and issues |
154
+ | secrets | 6 | Encrypted local secrets store |
155
+
156
+ Manage startup packs:
112
157
 
113
158
  ```bash
114
- causly-server toolsets # show what loads at startup
159
+ causly-server toolsets # show what loads at startup
115
160
  causly-server toolsets add github,gmail
116
161
  causly-server toolsets remove seo
117
- causly-server toolsets reset
162
+ causly-server toolsets reset # back to the defaults
118
163
  ```
119
164
 
120
- ### No restart needed: `use_tool`
121
-
122
- Some editors do not refresh their tool list mid-chat. `use_tool` lets your agent call any tool by name, even one that is not loaded yet; the pack loads automatically and every safety check still applies.
123
-
124
- ## Workflow Tools
165
+ ## Workflow tools
125
166
 
126
167
  Single tools are building blocks. These combine them into verified outcomes:
127
168
 
128
- - **`ship_change`**: inspects changes, creates a branch, runs project checks, commits, pushes, opens a pull request.
169
+ - **`ship_change`**: inspects changes, creates a branch, runs project checks, commits, pushes and opens a pull request.
129
170
  - **`fix_ci`**: finds a failing GitHub Actions run and fetches the real failure output.
130
- - **`verify_ci_fix`**: commits and pushes the fix, polls the workflow, confirms CI is green.
171
+ - **`verify_ci_fix`**: commits and pushes the fix, polls the workflow and confirms CI is green.
131
172
  - **`deploy_project`**: checks health, runs tests and build, deploys, polls, and HTTP-verifies the live URL.
132
173
 
133
174
  ```mermaid
@@ -145,56 +186,187 @@ flowchart TD
145
186
  J --> K["Shipped"]
146
187
  ```
147
188
 
148
- ## Works With
189
+ ## Configuration
190
+
191
+ Settings live in `~/.causly/.env` (on Windows, `C:\Users\<you>\.causly\.env`). Manage them with the CLI instead of editing by hand:
192
+
193
+ ```bash
194
+ causly-server setup # step by step, each key checked live
195
+ causly-server keys list # which keys are set (never the full value)
196
+ causly-server keys set NAME # hidden prompt
197
+ causly-server keys unset NAME
198
+ causly-server doctor --test # check every configured service live
199
+ ```
200
+
201
+ Changes are picked up without restarting your editor.
202
+
203
+ | Service | Variables | Notes |
204
+ | --- | --- | --- |
205
+ | GitHub | `GITHUB_TOKEN` | Fine-grained token: contents, issues, pull requests |
206
+ | Vercel | `VERCEL_TOKEN` | Project must be Git-linked for deploys |
207
+ | Supabase | `SUPABASE_ACCESS_TOKEN` | Management API |
208
+ | Slack | `SLACK_BOT_TOKEN` | `search:read` needs a user token |
209
+ | Notion | `NOTION_API_KEY` | Share each page or database with the integration |
210
+ | Linear | `LINEAR_API_KEY` | Personal API key |
211
+ | Sentry | `SENTRY_AUTH_TOKEN` | Add `event:write` to resolve or comment |
212
+ | Gmail | `GMAIL_CLIENT_ID`, `GMAIL_CLIENT_SECRET`, `GMAIL_REFRESH_TOKEN` | Run `causly-server login google` |
213
+ | Google Calendar | `CALENDAR_REFRESH_TOKEN` | Same Google client as Gmail |
214
+ | Telegram | `TELEGRAM_BOT_TOKEN`, `TELEGRAM_CHAT_ID` | Create a bot with @BotFather, message it, then find your chat id with `telegram_get_updates` |
215
+ | Groq (meeting transcription) | `GROQ_API_KEY` | Free tier available. Audio is uploaded to Groq only when you confirm a transcription |
216
+ | Secrets manager | `SECRETS_MASTER_KEY` | 32-byte hex key you generate and keep |
217
+ | Timezone (optional) | `CAUSLY_TIMEZONE` | IANA name, e.g. `Asia/Kolkata`; defaults to your machine's zone |
218
+
219
+ Docker and Terraform need no key, only the CLI on your `PATH`. Postgres and MySQL take a connection string on each call. Transcribing recordings over 25 MB needs `ffmpeg` on your `PATH`.
149
220
 
150
- Tested with Claude Desktop, Cursor, Windsurf, a plain JavaScript MCP client, and LangChain (JS) through `@langchain/mcp-adapters`. Any MCP-compatible client or agent framework can connect to the same stdio server.
221
+ ## Google setup (Gmail, Calendar, Search Console)
222
+
223
+ Google needs a one-time OAuth client that you own. It takes about five minutes.
224
+
225
+ 1. Open [Google Cloud Console](https://console.cloud.google.com) and create or pick a project.
226
+ 2. Enable the APIs you want: **Gmail API**, **Google Calendar API**, and optionally **Google Search Console API**.
227
+ 3. Open **Google Auth Platform**. Under **Branding**, fill in the app name and your support email. Under **Audience**, choose **External** and add your own Google account as a test user.
228
+ 4. Under **Clients**, choose **Create client** and pick **Desktop app**. A "Web application" client fails with `redirect_uri_mismatch`. Copy the client ID and secret.
229
+ 5. Save them in Causly: run `causly-server setup`, or `causly-server keys set GMAIL_CLIENT_ID` and `causly-server keys set GMAIL_CLIENT_SECRET`.
230
+ 6. Sign in once in your browser:
231
+
232
+ ```bash
233
+ causly-server login google # Gmail and Calendar
234
+ causly-server login google all # also Search Console
235
+ ```
236
+
237
+ **Avoid the 7-day expiry.** While your Google app is in *Testing*, Google expires the sign-in token every 7 days. Renew it any time with `causly-server login google`, or stop the expiry for good: in **Google Auth Platform → Audience**, click **Publish app** (In production). The Branding page from step 3 must be filled in first. For personal use you do not need Google verification; at sign-in you will see an "unverified app" warning, which is expected for your own client: choose **Advanced**, then continue.
238
+
239
+ ## Works with
240
+
241
+ | Client | Setup |
242
+ | --- | --- |
243
+ | Claude Desktop | `causly-server init` |
244
+ | Cursor | `causly-server init` |
245
+ | Windsurf | `causly-server init` |
246
+ | Claude Code | `init` prints the command: `claude mcp add causly-server -- node <path>/index.js` |
247
+ | Any MCP client or agent framework | Spawn `causly-server` over stdio |
248
+
249
+ Tested with Claude Desktop, Cursor and Windsurf (the same `use_tool` call on a real repository in each), a plain JavaScript MCP client, and LangChain (JS) through `@langchain/mcp-adapters`.
250
+
251
+ A minimal custom agent in JavaScript:
252
+
253
+ ```js
254
+ import { Client } from "@modelcontextprotocol/sdk/client/index.js";
255
+ import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
256
+
257
+ const client = new Client({ name: "my-agent", version: "1.0.0" });
258
+ // Find the install folder with: npm root -g
259
+ await client.connect(new StdioClientTransport({
260
+ command: "node",
261
+ args: ["<npm-root>/causly-server/index.js"],
262
+ }));
263
+
264
+ const { tools } = await client.listTools(); // search_tools, load_toolset, use_tool, ...
265
+ const result = await client.callTool({
266
+ name: "use_tool",
267
+ arguments: { tool: "git_status", arguments: { repo_path: "." } },
268
+ });
269
+ console.log(result.content[0].text);
270
+ ```
151
271
 
152
- ## Security
272
+ ## Security and privacy
153
273
 
154
- Causly can touch your files, repositories and infrastructure, so the controls live in the server itself.
274
+ Causly can touch your files, repositories and infrastructure, so the controls live in the server itself. See [SECURITY.md](./SECURITY.md) to report a vulnerability.
155
275
 
156
- - **Permission levels:** every tool is `READ`, `LOW`, `MEDIUM`, `HIGH` or `DESTRUCTIVE`. `HIGH` and `DESTRUCTIVE` actions (deploys, merges, shell commands, deletes, raw SQL, Terraform apply and destroy, Docker removal) need an explicit `confirm: true`.
157
- - **Workspace limit:** `init --workspace <folder>` restricts file and command tools to one folder.
158
- - **Approval for outside actions:** anything that emails real people, such as calendar invites with guests, needs confirmation first.
159
- - **Secret redaction:** tokens, passwords and API keys are redacted before anything is written to logs.
160
- - **Command risk checks:** drive wipes, formatting and shutdown commands are blocked; force-pushes, `DROP TABLE`, `curl | bash` and `sudo` are flagged.
161
- - **Path protection:** writes and deletes inside protected system directories are blocked.
162
- - **Local encrypted secrets:** AES-256-GCM with a key you control, no external vault.
163
- - **Activity log:** every call is recorded in `logs/activity.log` as structured JSONL (timestamp, operation ID, risk, status, redacted input, duration).
164
- - **Your data stays local:** the pipeline, meetings and reminders live in a local SQLite file. `causly-server backup` and `restore` keep it safe.
276
+ - **Permission levels.** Every tool is `READ`, `LOW`, `MEDIUM`, `HIGH` or `DESTRUCTIVE`. `HIGH` and `DESTRUCTIVE` actions (deploys, merges, shell commands, deletes, raw SQL, Terraform apply and destroy, Docker removal) need an explicit `confirm: true`.
277
+ - **Workspace limit.** `causly-server init --workspace <folder>` restricts file and command tools to one folder.
278
+ - **Command risk checks.** Drive wipes, formatting and shutdown commands are blocked. Force-pushes, `DROP TABLE`, `curl | bash` and `sudo` are flagged.
279
+ - **Path protection.** Writes and deletes inside protected system directories are blocked.
280
+ - **Secret redaction.** Tokens, passwords and API keys are redacted before anything is written to logs.
281
+ - **Local encrypted secrets.** The built-in secrets manager uses AES-256-GCM with a key you control. No external vault needed.
282
+ - **Activity log.** Every call is recorded in `logs/activity.log` as structured JSONL (timestamp, operation ID, risk level, status, redacted input, duration).
283
+
284
+ **Privacy.** Causly Server has no Causly cloud and no Causly account. Your pipeline, meetings and reminders are stored in a local SQLite file, and your keys stay in `~/.causly/.env`. Data leaves your machine only when you use a service you configured, for example GitHub, Gmail, Telegram, or Groq for transcription, and only to that service.
165
285
 
166
286
  Optional BoundaryAttest receipts for `ship_change`, `verify_ci_fix` and `deploy_project` are described in [the docs](https://agenv.causly.in/docs/server/tools/boundaryattest).
167
287
 
168
- ## Command Reference
288
+ ## Command reference
169
289
 
170
290
  ```text
171
- causly-server init | status | doctor [--test] | setup [service]
291
+ causly-server Start the MCP server (your editor runs this)
292
+ causly-server init Set up Claude Desktop, Cursor and Windsurf
293
+ --client claude|cursor|windsurf|all
294
+ --workspace <folder>
295
+ --toolsets <list>
296
+ --no-setup
297
+ causly-server status One screen: editors, keys, pipeline, reminders, backup, updates
298
+ causly-server doctor [--test] Check your setup; --test also checks every key live
299
+ causly-server setup [service] Add API keys step by step
172
300
  causly-server keys list | set NAME | unset NAME | open
173
301
  causly-server login google [gmail,calendar,gsc|all]
174
302
  causly-server toolsets [add|remove|reset]
175
- causly-server backup [file] | restore <file> [--yes]
176
- causly-server remove [--client <name>]
303
+ causly-server backup [file] Save a copy of your pipeline, meetings and reminders
304
+ causly-server restore <file> [--yes] Put a backup back (current data is kept as a copy)
305
+ causly-server remove [--client <name>] Remove it from your editors
306
+ causly-server --version
177
307
  ```
178
308
 
179
- ## Known Limitations
309
+ ## Troubleshooting
310
+
311
+ Start with `causly-server doctor`. It tells you what is missing.
312
+
313
+ | Problem | Fix |
314
+ | --- | --- |
315
+ | `causly-server` is not recognized after install | Open a new terminal so your `PATH` refreshes. Check that your npm global folder (`npm config get prefix`) is on `PATH`. |
316
+ | Editor does not show the tools after `init` | Quit the editor completely (including the system tray) and open it again. |
317
+ | The agent cannot see a tool that is not loaded | Ask it to call the tool with `use_tool`, or run `causly-server toolsets add <pack>`. |
318
+ | Gmail or Calendar stopped working | Your Google token expired (7 days in Testing mode). Run `causly-server login google`. |
319
+ | `redirect_uri_mismatch` during Google sign-in | Your OAuth client is a "Web application". Create a **Desktop app** client instead. |
320
+ | A reminder never reached Telegram | Set both `TELEGRAM_BOT_TOKEN` and `TELEGRAM_CHAT_ID`, then run `causly-server doctor --test`. |
321
+ | Transcription fails on a large file | Install `ffmpeg` and make sure it is on your `PATH`. Files above 25 MB are compressed first. |
322
+ | `restore` cannot replace the data file | Quit Claude Desktop, Cursor and any app using Causly Server, then run it again. |
323
+ | A file or command is refused | A workspace limit may be on. Check `causly-server doctor`, or re-run `init` with the folder you want. |
324
+
325
+ ## FAQ
326
+
327
+ **Is it free?** Yes. It is MIT licensed, including for commercial use. The services you connect have their own pricing.
328
+
329
+ **Does my data go to Causly?** No. There is no Causly cloud in the loop. See [Security and privacy](#security-and-privacy).
330
+
331
+ **Do I need every key?** No. Add keys only for the services you use.
332
+
333
+ **Which agents work with it?** Any MCP client. It is tested with Claude Desktop, Cursor, Windsurf, a plain JavaScript client and LangChain (JS).
334
+
335
+ **Why is my agent not calling a tool?** It may be in a pack that is not loaded. Tell the agent to use `use_tool`, or add the pack with `causly-server toolsets add <pack>`.
336
+
337
+ **How do I update?** `npm update -g causly-server`. `status` and `doctor` tell you when a new version is out.
338
+
339
+ **How do I back up my data?** `causly-server backup` saves your pipeline, meetings and reminders to a file. `causly-server restore <file>` puts it back.
340
+
341
+ **How do I remove it?** `causly-server remove` takes it out of your editors. Then `npm uninstall -g causly-server`.
342
+
343
+ **Is there a hosted version?** Causly Hosted is in development. [Join the waitlist](https://tally.so/r/NpZkpW).
344
+
345
+ ## Compatibility
346
+
347
+ | | Status |
348
+ | --- | --- |
349
+ | Node.js | 20 or newer |
350
+ | Windows | Tested |
351
+ | macOS and Linux | Expected to work; not yet tested on real machines. Reports welcome. |
352
+ | Editors | Claude Desktop, Cursor, Windsurf (tested); Claude Code (command printed by `init`) |
353
+
354
+ ## Known limitations
180
355
 
181
356
  - `vercel_create_deployment` and `deploy_project` need the Vercel project to be Git-linked already.
182
357
  - `supabase_run_sql` uses the Supabase Management API; some personal access tokens get a `403` for SQL.
183
358
  - `slack_search_messages` needs a Slack user token with the `search:read` scope.
184
359
  - `docker_push` needs registry authentication already configured on the host.
185
360
  - Sentry `resolve_issue`, `ignore_issue` and `add_comment` need a token with the `event:write` scope.
186
- - On Windows, if `npm install` fails with `'node' is not recognized` in a postinstall script, retry with `npm install --ignore-scripts` ([issue #2](https://github.com/KNIHAL/causly-server/issues/2)).
187
-
188
- ## Documentation, Roadmap, Contributing
189
-
190
- - Detailed docs: [agenv.causly.in/docs/server](https://agenv.causly.in/docs/server/intro)
191
- - [ROADMAP.md](./ROADMAP.md), [CONTRIBUTING.md](./CONTRIBUTING.md), [CODE_OF_CONDUCT.md](./CODE_OF_CONDUCT.md), [CHANGELOG.md](./CHANGELOG.md)
192
361
 
193
- ## License
362
+ ## Contributing, roadmap, license
194
363
 
195
- [MIT](./LICENSE): free to use, modify and distribute, including commercially.
364
+ - Docs: [agenv.causly.in/docs/server](https://agenv.causly.in/docs/server/intro)
365
+ - [CONTRIBUTING.md](./CONTRIBUTING.md) explains how to add a tool pack and the manual testing checklist. Please read the [Code of Conduct](./CODE_OF_CONDUCT.md) too.
366
+ - [ROADMAP.md](./ROADMAP.md) has what is planned next. [CHANGELOG.md](./CHANGELOG.md) has release history.
367
+ - License: [MIT](./LICENSE).
196
368
 
197
- ## Want Something Custom Built On This?
369
+ ## Want something custom built on this?
198
370
 
199
371
  Need a custom MCP server, a specific integration, or a related service for your product or team? Reach out: **nihal@causly.in**
200
372
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "causly-server",
3
- "version": "1.5.0",
3
+ "version": "1.5.1",
4
4
  "description": "Causly MCP server — an open-source MCP server that gives AI agents the tools to build, ship, deploy, and operate real software end-to-end.",
5
5
  "license": "MIT",
6
6
  "main": "index.js",