@scribed/cli 0.1.24 → 0.1.25
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.
- package/README.md +96 -4
- package/dist/index.js +9447 -2860
- package/dist/mcp/server.js +1699 -685
- package/package.json +3 -3
- package/types/mcp.d.ts +2 -0
package/README.md
CHANGED
|
@@ -2,6 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
Command-line client + MCP server for Scribed — CRM records, phone + texting, inbox, calendar + booking, transcriptions, HR, the Vault + workspace pages, and automations from the terminal or from an MCP host such as Cursor or Claude. The entire domain surface is **derived from the scribed-agent tool catalog**: nothing is hand-duplicated, so a new eligible catalog tool automatically becomes a CLI command (`scribed call <tool>`) and an MCP tool.
|
|
4
4
|
|
|
5
|
+
Verified catalog (2026-10-18): **1,102 external tools across 48 categories**;
|
|
6
|
+
581 tools in 28 categories are included in the default core set. Route
|
|
7
|
+
coverage does not imply full UI parity: session-only actions and the remaining
|
|
8
|
+
option audit are tracked in the repository's `output/ui-parity/` reports.
|
|
9
|
+
|
|
5
10
|
## Install
|
|
6
11
|
|
|
7
12
|
Requires Node.js 20 or newer; users do not need Bun.
|
|
@@ -41,14 +46,70 @@ Downloads use a new private folder, verify the published SHA256 and exact HTTP d
|
|
|
41
46
|
|
|
42
47
|
On Windows, the CLI verifies Authenticode trust and reports the signer before opening the published native installer. `installer-opened` means installation is still pending in that window. JSON reports `downloaded`, `installed`, `already-installed`, or `installer-opened`; list results distinguish `available`, `unsupported`, and `unavailable` release metadata. App sign-in, billing and microphone/Accessibility permissions remain separate and are completed in the app. These operating-system commands are not hosted API or MCP tools.
|
|
43
48
|
|
|
44
|
-
##
|
|
49
|
+
## Send work from Scribed to a coding project
|
|
50
|
+
|
|
51
|
+
This local connection is the reverse of MCP access: Scribed sends your requested
|
|
52
|
+
task to a project on your computer and reads the agent's reply. It uses your
|
|
53
|
+
existing coding-agent CLI sign-in, not a hosted “Sign in with Claude/Cursor/Codex”
|
|
54
|
+
integration. No marketplace listing or publisher review is needed for these
|
|
55
|
+
local paths. Your platform's access rules, project trust and normal billing apply.
|
|
56
|
+
Requires a released CLI/API build with local handoff support.
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
scribed login --api-url https://app.scribed.ai
|
|
60
|
+
scribed agents connect codex --project /path/to/project --mode agent
|
|
61
|
+
# Setup prints the connection ID and listener command:
|
|
62
|
+
scribed agents listen --connection <id>
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Keep the listener running, then tell Scribed: “Send my Codex project a prompt to
|
|
66
|
+
fix the checkout tests.” Scribed discovers your connected projects, sends the
|
|
67
|
+
requested prompt and can read the reply. Settings → API / CLI / MCP also has a
|
|
68
|
+
project picker, message history, queued-message cancellation and disconnect.
|
|
69
|
+
If several projects match, specify the project name. Project connections are
|
|
70
|
+
private to your account and do not inherit the selected workspace.
|
|
71
|
+
|
|
72
|
+
| Platform | Local setup | What receives the task |
|
|
73
|
+
| --- | --- | --- |
|
|
74
|
+
| Codex | `scribed agents connect codex --project /path/to/project` | A fresh `codex exec` session in that folder; read-only by default, workspace writes with explicit `--mode agent`. |
|
|
75
|
+
| Cursor | `scribed agents connect cursor --project /path/to/project` | A fresh Cursor CLI planning session. This connector supports plan mode only; it does not enable forced unattended edits. |
|
|
76
|
+
| Claude Code | `scribed agents connect claude-code --project /path/to/project` | A new interactive Claude Code session started with the exact channel commands printed by setup. Plan by default; `--mode agent` retains the session's ordinary permission controls. |
|
|
77
|
+
|
|
78
|
+
Claude Code Channels is an experimental research preview. Custom channels use
|
|
79
|
+
the documented `--dangerously-load-development-channels server:scribed-channel`
|
|
80
|
+
development option and require local trust; organization policy still applies.
|
|
81
|
+
Keep that interactive session open. The CLI does not change provider permission
|
|
82
|
+
settings or relay approval decisions. `scribed agents channel-setup --connection
|
|
83
|
+
<id>` prints the setup again. Codex/Cursor connections start fresh tasks and do
|
|
84
|
+
not inject into an existing desktop chat or automatically resume one.
|
|
85
|
+
|
|
86
|
+
Only display metadata goes into the project registration. The canonical project
|
|
87
|
+
path and random listener capability are saved in private files under
|
|
88
|
+
`~/.config/scribed/channels/`; the API stores a capability hash. Every operation
|
|
89
|
+
also requires your current Scribed login and the original account/server.
|
|
90
|
+
The provider process receives task text on standard input, never as a shell
|
|
91
|
+
command; Scribed-specific environment credentials are removed from its environment.
|
|
92
|
+
|
|
93
|
+
Prompts are limited to 4,000 characters, replies to 8,000. Queued prompts expire
|
|
94
|
+
after 24 hours. Delivery alone does not prove execution or completion. An
|
|
95
|
+
uncertain claim, process result or reply is never automatically executed again.
|
|
96
|
+
Inspect the history and project before sending another task. Disconnect cancels
|
|
97
|
+
queued messages and refuses future claims; already delivered work may continue
|
|
98
|
+
and can be stopped in the coding agent itself. A crashed listener leaves a local
|
|
99
|
+
lock: follow its diagnostic only after checking no listener remains.
|
|
100
|
+
|
|
101
|
+
## Sign in to Scribed
|
|
45
102
|
|
|
46
103
|
Three credential modes; exactly one is stored at a time.
|
|
47
104
|
|
|
48
105
|
```bash
|
|
49
106
|
scribed login # browser OAuth: Google, Apple, password, and 2FA
|
|
50
107
|
scribed login --no-open # print the browser URL instead of opening it
|
|
51
|
-
scribed login --password # terminal email/password
|
|
108
|
+
scribed login --password # terminal email/password → bearer session
|
|
109
|
+
scribed login --email-otp --email me@acme.com # request an email sign-in code
|
|
110
|
+
scribed login --phone-otp --phone +14155550123 # request a phone sign-in code
|
|
111
|
+
scribed login --password --two-factor otp # use an existing SMS/email 2FA challenge
|
|
112
|
+
scribed login --password --two-factor backup # use an existing saved backup code
|
|
52
113
|
scribed login --password --email me@acme.com --api-url http://localhost:8081
|
|
53
114
|
scribed login --api-key <key> # personal API key (Settings → API keys) for CI/scripts
|
|
54
115
|
scribed login --api-key <key> --no-verify # store it without the GET /v1/tools liveness check
|
|
@@ -64,9 +125,36 @@ The default login registers a public OAuth client, opens Scribed in the browser,
|
|
|
64
125
|
|
|
65
126
|
`--password` requires a Scribed account with an existing password; Google-only and Apple-only accounts use browser sign-in. For API-key login, replace `<key>` with the complete `scribed_api_…` secret. Interactive users should use `scribed login`; personal API keys are for unattended CI and scripts.
|
|
66
127
|
|
|
128
|
+
Terminal sign-in uses the same authentication transport as the native apps.
|
|
129
|
+
Email/phone code availability is checked before sending; codes and passwords are
|
|
130
|
+
entered privately, never as command flags. If the account requires 2FA, select
|
|
131
|
+
an offered authenticator (`totp`), sent code (`otp`) or saved backup code
|
|
132
|
+
(`backup`); `--two-factor` selects it in advance. The resulting bearer is checked
|
|
133
|
+
against its verified, unexpired session before private local storage. Challenges
|
|
134
|
+
stay in memory. A rejected code offers explicit retry/cancel without resending;
|
|
135
|
+
at the two-factor code prompt, `/switch` selects another available method and
|
|
136
|
+
`/cancel` stops. Returning to the OTP method keeps its already requested code.
|
|
137
|
+
Known expiry, lockout, rate-limit and uncertain network responses stop the flow.
|
|
138
|
+
The phone API intentionally reports incorrect, expired and exhausted attempts
|
|
139
|
+
alike; correcting a code reuses that same attempt and its server-enforced limits.
|
|
140
|
+
Trust-device persistence,
|
|
141
|
+
2FA enrollment/removal and backup-code generation remain in the browser.
|
|
142
|
+
|
|
67
143
|
### First-time account setup
|
|
68
144
|
|
|
69
|
-
|
|
145
|
+
Run `scribed signup` for the terminal wizard. It uses the same account fields, validation, email verification and mobile verification as the native apps, and stores the resulting bearer session like `login --password`. Terms acceptance is explicit; verification codes must come from the person signing up.
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
scribed signup
|
|
149
|
+
scribed signup --input private-signup.json --json
|
|
150
|
+
scribed signup --resume --email you@example.com --email-code <code> --send-phone-code --json
|
|
151
|
+
scribed signup --resume --email you@example.com --send-phone-code --phone-channel call --json
|
|
152
|
+
scribed signup --resume --email you@example.com --phone-code <code> --json
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
`--input` accepts the shared `packages/account-signup` `SignUpDraft`, including `password`, `confirmPassword` and explicit `acceptTerms`. Protect that input file; passwords and codes are never saved in CLI configuration or printed. The staged flow reports what remains and resumes verification without creating another account. Phone codes use SMS by default; `--phone-channel call` requests a voice call when sending a code. Supplying `--phone-code` verifies that code without sending another. Use `--resend-email` to request a replacement email code and `--invite-token` to sign up for an existing invitation.
|
|
156
|
+
|
|
157
|
+
Google/Apple consent stays in the browser: run `scribed login`, choose **Sign up**, complete the wizard, and then authorize the CLI. Browser login never collects signup details in the terminal. Subsequent onboarding tools remain limited by their API authorization; the offline signup lifecycle test does not prove live onboarding apply.
|
|
70
158
|
|
|
71
159
|
### Credentials and environment
|
|
72
160
|
|
|
@@ -306,7 +394,11 @@ scribed records view create deals --input view.json | view update <viewId> --inp
|
|
|
306
394
|
scribed records summary deals [--view <id>] # the totals footer: count + Σ / avg per numeric column (objects_records_query + objects_views_list)
|
|
307
395
|
scribed records lookup +14155550101 | records lookup ada@example.com # objects_record_lookup (caller ID; an @ = by email)
|
|
308
396
|
scribed records import deals deals.csv [--map "Amount ($)=amount"] [--set stage="Soft Commit"] [--ai] [--dry-run] [--concurrency 4]
|
|
309
|
-
# CSV / TSV / JSON parsed here → objects_record_create per row (--ai: objects_import_suggest_mapping)
|
|
397
|
+
# CSV / TSV / JSON / XLSX / XLSM / vCard parsed here → objects_record_create per row (--ai: objects_import_suggest_mapping)
|
|
398
|
+
scribed records import contacts contacts.xlsx extra.vcf --dry-run
|
|
399
|
+
scribed records import contacts contacts.xlsx --sheet "Customers" --map "City=address#city"
|
|
400
|
+
# all visible worksheets by default; --sheet repeats to select sheets; --map also accepts address key#part
|
|
401
|
+
# merged columns, synthesized full names, and file + sheet + row diagnostics; 50 MiB per file
|
|
310
402
|
scribed records export deals [--where …] [--columns name,amount,stage] [--max-rows 50000] --out deals.csv
|
|
311
403
|
# objects_records_export — EVERY matching row, rendered server-side (labels, member names, linked
|
|
312
404
|
# titles); reserved for the workspace owner and the members granted "Export data" in Settings →
|