0nmcp 2.0.0 → 2.1.0
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 +111 -47
- package/cli.js +274 -0
- package/index.js +8 -1
- package/lib/stats.json +1 -1
- package/package.json +18 -2
- package/vault/deed-collector.js +286 -0
- package/vault/deed-importer.js +277 -0
- package/vault/deed.js +319 -0
- package/vault/tools-deed.js +257 -0
package/README.md
CHANGED
|
@@ -20,19 +20,19 @@
|
|
|
20
20
|
[](https://modelcontextprotocol.io)
|
|
21
21
|
[](http://makeapullrequest.com)
|
|
22
22
|
[](#-supported-services)
|
|
23
|
-
[](#-all-tools)
|
|
24
24
|
[](#-community)
|
|
25
25
|
[](https://github.com/0nork/0nMCP/discussions)
|
|
26
26
|
|
|
27
|
-
**
|
|
27
|
+
**564 tools. 26 services. Zero configuration. One natural language interface.**
|
|
28
28
|
|
|
29
|
-
[Quick Start](#-installation) · [Services](#-supported-services) · [
|
|
29
|
+
[Quick Start](#-installation) · [Services](#-supported-services) · [564 Tools](#-all-tools) · [.0n Standard](#-the-0n-standard) · [Unlocks](#-unlocks) · [Community](#-community) · [Contributing](#-contributing)
|
|
30
30
|
|
|
31
31
|
</div>
|
|
32
32
|
|
|
33
33
|
---
|
|
34
34
|
|
|
35
|
-
> **
|
|
35
|
+
> **v2.1.0** — 564 tools across 26 services in 13 categories. 714 total capabilities. Now with **Business Deed Transfer** (package + escrow + transfer entire digital businesses), **0nVault Containers** (Patent Pending #63/990,046 — 7 semantic layers, multi-party escrow, Seal of Truth), **Application Engine**, **Workflow Runtime** + **HTTP Server**, and **portable AI Brain bundles**. [See what's new](#-whats-new-in-v21).
|
|
36
36
|
|
|
37
37
|
---
|
|
38
38
|
|
|
@@ -157,7 +157,7 @@ Add to `~/Library/Application Support/Claude/claude_desktop_config.json` (Mac) o
|
|
|
157
157
|
| **MongoDB** | Database | Find, insert, update, delete, aggregate documents via Atlas Data API |
|
|
158
158
|
| **CRM** | CRM | **245 tools** — contacts, conversations, calendars, invoices, payments, products, pipelines, social media, custom objects, and more |
|
|
159
159
|
|
|
160
|
-
**26 services.
|
|
160
|
+
**26 services. 564 tools. 13 categories. One interface.**
|
|
161
161
|
|
|
162
162
|
> **More coming:** QuickBooks, Asana, Intercom, AWS S3, Vercel, Cloudflare, Firebase, Figma...
|
|
163
163
|
|
|
@@ -267,26 +267,43 @@ The deepest CRM integration available in any MCP server. 245 tools across 12 mod
|
|
|
267
267
|
| **Users** | 24 | Users, forms, surveys, funnels, media, companies, businesses |
|
|
268
268
|
| **Objects** | 34 | Custom objects, associations, email, workflows, snapshots, links, campaigns, courses, SaaS |
|
|
269
269
|
|
|
270
|
-
**
|
|
270
|
+
**564 total tools.** Universal orchestration (290 catalog tools across 26 services) + the most comprehensive CRM integration in the MCP ecosystem (245 dedicated tools) + Vault (4 tools) + Vault Containers (8 tools) + Business Deed Transfer (6 tools) + Engine (6 tools) + App Builder (5 tools).
|
|
271
271
|
|
|
272
272
|
> Every CRM tool is data-driven — defined as configuration, not code. Adding new endpoints takes minutes, not hours. See [CONTRIBUTING.md](CONTRIBUTING.md).
|
|
273
273
|
|
|
274
274
|
---
|
|
275
275
|
|
|
276
|
-
## What's New in
|
|
276
|
+
## What's New in v2.1
|
|
277
277
|
|
|
278
|
-
|
|
279
|
-
|
|
278
|
+
### v2.1.0 — Business Deed Transfer System
|
|
279
|
+
|
|
280
|
+
- **6 new tools**: `deed_create`, `deed_open`, `deed_inspect`, `deed_verify`, `deed_accept`, `deed_import`
|
|
281
|
+
- Package entire business digital assets into encrypted `.0nv` containers
|
|
282
|
+
- Chain of custody tracking with transfer history in audit_trail layer
|
|
283
|
+
- Auto-detection of credentials from .env/JSON/CSV via engine mapper
|
|
284
|
+
- Lifecycle: **CREATE → PACKAGE → ESCROW → ACCEPT → IMPORT → FLIP**
|
|
285
|
+
|
|
286
|
+
### v2.0.0 — 0nVault Container System (Patent Pending #63/990,046)
|
|
287
|
+
|
|
288
|
+
- **8 new tools**: `vault_container_create/open/inspect/verify` + `escrow_create/escrow_unwrap/transfer/revoke`
|
|
289
|
+
- **7 semantic layers**: workflows, credentials, env_vars, mcp_configs, site_profiles, ai_brain, audit_trail
|
|
290
|
+
- Argon2id double-encryption for credential layer
|
|
291
|
+
- X25519 ECDH multi-party escrow (up to 8 parties, per-layer access matrix)
|
|
292
|
+
- **Seal of Truth**: SHA3-256 content-addressed integrity verification
|
|
293
|
+
- Ed25519 digital signatures, binary `.0nv` container format
|
|
294
|
+
- Transfer registry with replay prevention
|
|
295
|
+
- **Application Engine** — build, distribute, inspect, schedule `.0n` applications
|
|
296
|
+
|
|
297
|
+
### v1.7.0 — Foundation
|
|
298
|
+
|
|
299
|
+
- 550 tools across 26 services in 13 categories — 708 total capabilities
|
|
300
|
+
- **.0n Conversion Engine** — import credentials, auto-map to 26 services, generate configs for 7 AI platforms
|
|
280
301
|
- **Vault** — machine-bound encrypted credential storage (AES-256-GCM + PBKDF2-SHA512 + hardware fingerprint)
|
|
281
|
-
- **
|
|
282
|
-
- **Workflow Runtime** — load and execute `.0n` workflow files with template engine, conditions, and step chaining
|
|
283
|
-
- **HTTP Server** — Express-based REST API, MCP over HTTP, and webhook receivers
|
|
284
|
-
- **Named Runs / Hotkeys** — define command aliases in your SWITCH file, run them as `0nmcp launch`, `0nmcp hello`
|
|
285
|
-
- **Interactive Shell** — `0nmcp shell` starts a REPL for `/command` execution
|
|
286
|
-
- **Portable encryption** — passphrase-only AES-256-GCM (no machine fingerprint, works anywhere)
|
|
287
|
-
- **245 CRM tools** — full API coverage across 12 modules
|
|
302
|
+
- **Workflow Runtime** + **HTTP Server** + **CLI with named runs**
|
|
288
303
|
- **Three-Level Execution** (Patent Pending) — Pipeline → Assembly Line → Radial Burst
|
|
289
304
|
|
|
305
|
+
> **564 tools. 26 services. 714 total capabilities.** See [CHANGELOG.md](CHANGELOG.md) for full version history.
|
|
306
|
+
|
|
290
307
|
---
|
|
291
308
|
|
|
292
309
|
## How It Works
|
|
@@ -324,7 +341,7 @@ The orchestrator uses keyword matching to route tasks to the right service. Less
|
|
|
324
341
|
| **Flexibility** | Say what you want | Triggers/actions only | Unlimited but complex |
|
|
325
342
|
| **Maintenance** | Zero | Update broken zaps | Fix API changes |
|
|
326
343
|
| **Open source** | Yes (MIT) | No | Depends |
|
|
327
|
-
| **Tools available** |
|
|
344
|
+
| **Tools available** | 564 | Varies | Whatever you build |
|
|
328
345
|
|
|
329
346
|
---
|
|
330
347
|
|
|
@@ -375,32 +392,62 @@ Every task execution is logged to `~/.0n/history/` as JSONL — full audit trail
|
|
|
375
392
|
|
|
376
393
|
```
|
|
377
394
|
0nMCP/
|
|
378
|
-
├── index.js
|
|
379
|
-
├── catalog.js
|
|
380
|
-
├── connections.js
|
|
381
|
-
├── orchestrator.js
|
|
382
|
-
├──
|
|
383
|
-
├──
|
|
384
|
-
├──
|
|
385
|
-
├──
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
│ ├──
|
|
390
|
-
│ ├──
|
|
391
|
-
│ ├──
|
|
392
|
-
│ ├──
|
|
393
|
-
│ ├──
|
|
394
|
-
│ ├──
|
|
395
|
-
│ ├──
|
|
396
|
-
│ ├──
|
|
397
|
-
│ ├──
|
|
398
|
-
│ ├──
|
|
399
|
-
│
|
|
395
|
+
├── index.js # Entry point — MCP server startup
|
|
396
|
+
├── catalog.js # Service catalog — 26 integrations with endpoints
|
|
397
|
+
├── connections.js # Connection manager — ~/.0n/connections/*.0n
|
|
398
|
+
├── orchestrator.js # AI execution planner — the brain
|
|
399
|
+
├── workflow.js # WorkflowRunner — .0n file execution
|
|
400
|
+
├── server.js # Express HTTP server — MCP over HTTP + webhooks
|
|
401
|
+
├── webhooks.js # Webhook receiver and HMAC verification
|
|
402
|
+
├── ratelimit.js # Per-service rate limiting with retry
|
|
403
|
+
├── tools.js # Tool registration for catalog + engine tools
|
|
404
|
+
├── cli.js # CLI — 39KB, all commands
|
|
405
|
+
├── crm/ # 245 CRM tools across 12 modules
|
|
406
|
+
│ ├── index.js # Tool orchestrator — registers all modules
|
|
407
|
+
│ ├── helpers.js # Data-driven tool factory — registerTools()
|
|
408
|
+
│ ├── auth.js # OAuth, tokens, snapshots, workflows (5 tools)
|
|
409
|
+
│ ├── contacts.js # Contact management (23 tools)
|
|
410
|
+
│ ├── conversations.js # Messaging — SMS, Email, WhatsApp, IG, FB (13 tools)
|
|
411
|
+
│ ├── calendars.js # Calendar & scheduling (27 tools)
|
|
412
|
+
│ ├── opportunities.js # Pipeline & deal management (14 tools)
|
|
413
|
+
│ ├── invoices.js # Invoicing (20 tools)
|
|
414
|
+
│ ├── payments.js # Payment processing (16 tools)
|
|
415
|
+
│ ├── products.js # Product catalog (10 tools)
|
|
416
|
+
│ ├── locations.js # Location management (24 tools)
|
|
417
|
+
│ ├── social.js # Social media & blogs (35 tools)
|
|
418
|
+
│ ├── users.js # User & form management (24 tools)
|
|
419
|
+
│ └── objects.js # Custom objects & associations (34 tools)
|
|
420
|
+
├── vault/ # Encrypted credential storage + containers
|
|
421
|
+
│ ├── index.js # Vault entry — seal/unseal/verify/fingerprint (4 tools)
|
|
422
|
+
│ ├── container.js # 0nVault Container orchestrator
|
|
423
|
+
│ ├── crypto-container.js # AES-256-GCM + Argon2id encryption
|
|
424
|
+
│ ├── layers.js # 7 semantic layers
|
|
425
|
+
│ ├── escrow.js # X25519 ECDH multi-party escrow
|
|
426
|
+
│ ├── seal.js # Seal of Truth — SHA3-256 integrity
|
|
427
|
+
│ ├── registry.js # Transfer registry with replay prevention
|
|
428
|
+
│ ├── tools-container.js # 8 vault container tools
|
|
429
|
+
│ ├── deed.js # Business Deed Transfer core
|
|
430
|
+
│ ├── deed-collector.js # Asset collection from .env/JSON/CSV
|
|
431
|
+
│ ├── deed-importer.js # Import deeds into .0n ecosystem
|
|
432
|
+
│ ├── tools-deed.js # 6 deed transfer tools
|
|
433
|
+
│ └── cache.js # Vault cache layer
|
|
434
|
+
├── engine/ # .0n Conversion Engine + App Builder
|
|
435
|
+
│ ├── index.js # Engine entry — 6 tools
|
|
436
|
+
│ ├── parser.js # Multi-format credential parser
|
|
437
|
+
│ ├── mapper.js # Auto-map credentials to 26 services
|
|
438
|
+
│ ├── validator.js # API key verification
|
|
439
|
+
│ ├── platforms.js # 7 AI platform config generators
|
|
440
|
+
│ ├── bundler.js # Portable .0n bundle creator
|
|
441
|
+
│ ├── cipher-portable.js # Passphrase-only AES-256-GCM
|
|
442
|
+
│ ├── application.js # Application Engine core
|
|
443
|
+
│ ├── app-builder.js # App builder
|
|
444
|
+
│ ├── app-server.js # App HTTP middleware
|
|
445
|
+
│ ├── operations.js # App operations
|
|
446
|
+
│ └── scheduler.js # CronScheduler class
|
|
400
447
|
├── types/
|
|
401
|
-
│ └── index.d.ts
|
|
448
|
+
│ └── index.d.ts # Full TypeScript definitions
|
|
402
449
|
├── package.json
|
|
403
|
-
├── LICENSE
|
|
450
|
+
├── LICENSE # MIT
|
|
404
451
|
└── CONTRIBUTING.md
|
|
405
452
|
```
|
|
406
453
|
|
|
@@ -410,8 +457,15 @@ Every task execution is logged to `~/.0n/history/` as JSONL — full audit trail
|
|
|
410
457
|
| **Connection Manager** | Stores credentials as `.0n` files in `~/.0n/connections/` per the .0n standard |
|
|
411
458
|
| **Orchestrator** | The brain — parses natural language, plans multi-step execution, calls APIs, chains data |
|
|
412
459
|
| **CRM Modules** | 245 tools across 12 modules — data-driven, every tool is config not code |
|
|
460
|
+
| **Vault** | Machine-bound encrypted credential storage — AES-256-GCM + PBKDF2-SHA512 |
|
|
461
|
+
| **Vault Container System** | Patent Pending #63/990,046 — 7 semantic layers, multi-party escrow, Seal of Truth, binary .0nv format |
|
|
462
|
+
| **Business Deed Transfer** | Package + escrow + transfer entire digital businesses in encrypted containers |
|
|
463
|
+
| **Conversion Engine** | Import credentials from .env/CSV/JSON, auto-map to 26 services, generate 7 AI platform configs |
|
|
464
|
+
| **Application Engine** | Build, distribute, schedule .0n applications with CronScheduler + HTTP middleware |
|
|
465
|
+
| **Workflow Runtime** | Load and execute `.0n` workflow files with template engine, conditions, and step chaining |
|
|
466
|
+
| **HTTP Server** | Express-based REST API, MCP over HTTP, and webhook receivers |
|
|
413
467
|
| **Rate Limiter** | Per-service rate limits with automatic retry and backoff |
|
|
414
|
-
| **Webhook Handler** |
|
|
468
|
+
| **Webhook Handler** | HMAC-verified event processing — Stripe, CRM, Slack, GitHub, Twilio, Shopify |
|
|
415
469
|
| **Execution History** | Logs every task to `~/.0n/history/` as JSONL — full audit trail |
|
|
416
470
|
| **TypeScript Defs** | Full type coverage for all exports, connections, workflows, and tools |
|
|
417
471
|
|
|
@@ -427,6 +481,16 @@ Every task execution is logged to `~/.0n/history/` as JSONL — full audit trail
|
|
|
427
481
|
- **Execution history** — Full audit trail in `~/.0n/history/`
|
|
428
482
|
- **Open source** — Audit every line yourself
|
|
429
483
|
|
|
484
|
+
### 0nVault Container Security (Patent Pending)
|
|
485
|
+
- **AES-256-GCM** encryption for all container layers
|
|
486
|
+
- **Argon2id** double-encryption for credential layer (memory-hard, side-channel resistant)
|
|
487
|
+
- **Ed25519** digital signatures for container authenticity
|
|
488
|
+
- **Seal of Truth** — SHA3-256 content-addressed integrity verification
|
|
489
|
+
- **X25519 ECDH** multi-party escrow — up to 8 parties with per-layer access matrix
|
|
490
|
+
- **Binary .0nv format** — magic bytes `0x304E5350`, tamper-evident structure
|
|
491
|
+
- **Transfer registry** — replay prevention with chain of custody tracking
|
|
492
|
+
- **Machine-bound vault** — PBKDF2-SHA512 (100K iterations) + hardware fingerprint binding
|
|
493
|
+
|
|
430
494
|
See [SECURITY.md](SECURITY.md) for our security policy and how to report vulnerabilities.
|
|
431
495
|
|
|
432
496
|
---
|
|
@@ -506,7 +570,7 @@ The tool factory handles registration, validation, API calls, error handling —
|
|
|
506
570
|
|
|
507
571
|
### Phase 0 — Foundation (Current)
|
|
508
572
|
|
|
509
|
-
- [x] **26 services,
|
|
573
|
+
- [x] **26 services, 564 tools, 13 categories**
|
|
510
574
|
- [x] Core orchestration engine with AI planning
|
|
511
575
|
- [x] **245 CRM tools** — full API coverage across 12 modules
|
|
512
576
|
- [x] Gmail, Google Sheets, Google Drive, Jira, Zendesk, Mailchimp, Zoom, Microsoft 365, MongoDB
|
|
@@ -589,7 +653,7 @@ We ship weekly. The codebase is active. The community is real. If you're buildin
|
|
|
589
653
|
|
|
590
654
|
| Metric | |
|
|
591
655
|
|--------|---|
|
|
592
|
-
| **Tools shipped** |
|
|
656
|
+
| **Tools shipped** | 564 |
|
|
593
657
|
| **Services integrated** | 26 |
|
|
594
658
|
| **Categories** | 13 |
|
|
595
659
|
| **CRM endpoints covered** | 245 / 245 (100%) |
|
|
@@ -640,7 +704,7 @@ node index.js
|
|
|
640
704
|
|
|
641
705
|
| Project | Description |
|
|
642
706
|
|---------|-------------|
|
|
643
|
-
| **[0nMCP](https://github.com/0nork/0nMCP)** | Universal AI API Orchestrator —
|
|
707
|
+
| **[0nMCP](https://github.com/0nork/0nMCP)** | Universal AI API Orchestrator — 564 tools, 26 services, Vault encryption, Business Deed transfer |
|
|
644
708
|
| **[0n-spec](https://github.com/0nork/0n-spec)** | The .0n Standard — universal configuration format for AI orchestration |
|
|
645
709
|
| **[0nork](https://github.com/0nork/0nork)** | The parent org — AI orchestration infrastructure |
|
|
646
710
|
|
|
@@ -655,7 +719,7 @@ node index.js
|
|
|
655
719
|
|
|
656
720
|
<div align="center">
|
|
657
721
|
|
|
658
|
-
**[Sponsor on GitHub](https://github.com/sponsors/0nork)** · **[Star the repo](https://github.com/0nork/0nMCP)** · **[Tell a friend](https://twitter.com/intent/tweet?text=0nMCP%20-%
|
|
722
|
+
**[Sponsor on GitHub](https://github.com/sponsors/0nork)** · **[Star the repo](https://github.com/0nork/0nMCP)** · **[Tell a friend](https://twitter.com/intent/tweet?text=0nMCP%20-%20564%20tools,%2026%20services,%20zero%20config.%20The%20universal%20AI%20API%20orchestrator.%20Free%20and%20open%20source.&url=https://github.com/0nork/0nMCP)**
|
|
659
723
|
|
|
660
724
|
</div>
|
|
661
725
|
|
|
@@ -665,7 +729,7 @@ node index.js
|
|
|
665
729
|
|
|
666
730
|
### Stop building workflows. Start describing outcomes.
|
|
667
731
|
|
|
668
|
-
**
|
|
732
|
+
**564 tools. 26 services. Zero config. MIT licensed. Community driven.**
|
|
669
733
|
|
|
670
734
|
**[Get Started](https://github.com/0nork/0nMCP)** · **[Join the Community](https://0nmcp.com/community)** · **[Unlock Schedule](https://0nmcp.com/sponsor)** · **[Read the Docs](https://github.com/0nork/0n-spec)**
|
|
671
735
|
|
package/cli.js
CHANGED
|
@@ -271,6 +271,13 @@ ${c.bright}Links:${c.reset}
|
|
|
271
271
|
return;
|
|
272
272
|
}
|
|
273
273
|
|
|
274
|
+
// Business Deed
|
|
275
|
+
if (command === 'deed') {
|
|
276
|
+
console.log(BANNER);
|
|
277
|
+
await handleDeed(args.slice(1));
|
|
278
|
+
return;
|
|
279
|
+
}
|
|
280
|
+
|
|
274
281
|
// Engine
|
|
275
282
|
if (command === 'engine') {
|
|
276
283
|
console.log(BANNER);
|
|
@@ -763,6 +770,273 @@ ${c.bright}7 Semantic Layers:${c.reset}
|
|
|
763
770
|
console.log(`Run ${c.cyan}0nmcp vault help${c.reset} for usage.`);
|
|
764
771
|
}
|
|
765
772
|
|
|
773
|
+
async function handleDeed(args) {
|
|
774
|
+
const sub = args[0];
|
|
775
|
+
|
|
776
|
+
if (!sub || sub === 'help') {
|
|
777
|
+
console.log(`
|
|
778
|
+
${c.bright}Business Deed — Digital Asset Transfer System${c.reset} ${c.yellow}(Patent Pending #63/990,046)${c.reset}
|
|
779
|
+
|
|
780
|
+
${c.cyan}deed create${c.reset} Create a Business Deed (.0nv)
|
|
781
|
+
--name <name> Business name (required)
|
|
782
|
+
--from <file> Import credentials from .env, .json, or .csv
|
|
783
|
+
--passphrase <pass> Encryption passphrase
|
|
784
|
+
--output <file> Output file path
|
|
785
|
+
|
|
786
|
+
${c.cyan}deed open <file>${c.reset} Open/decrypt a Business Deed
|
|
787
|
+
--passphrase <pass> Decryption passphrase
|
|
788
|
+
--layer <name> Only decrypt this layer
|
|
789
|
+
|
|
790
|
+
${c.cyan}deed inspect <file>${c.reset} Inspect deed metadata (no passphrase needed)
|
|
791
|
+
|
|
792
|
+
${c.cyan}deed verify <file>${c.reset} Verify Seal of Truth + Ed25519 signature
|
|
793
|
+
|
|
794
|
+
${c.cyan}deed accept <file>${c.reset} Accept a deed transfer (buyer)
|
|
795
|
+
--passphrase <pass> Current deed passphrase
|
|
796
|
+
--buyer-name <name> Buyer's name
|
|
797
|
+
--buyer-email <email> Buyer's email
|
|
798
|
+
--new-passphrase <pass> New passphrase for re-encrypted deed
|
|
799
|
+
|
|
800
|
+
${c.cyan}deed import <file>${c.reset} Import deed to live system config
|
|
801
|
+
--passphrase <pass> Decryption passphrase
|
|
802
|
+
--target <dir> Target directory (default: ~/.0n/)
|
|
803
|
+
|
|
804
|
+
${c.cyan}deed export${c.reset} Collect + package in one step
|
|
805
|
+
--from <file> Source file (.env, .json, .csv)
|
|
806
|
+
--name <name> Business name
|
|
807
|
+
--passphrase <pass> Encryption passphrase
|
|
808
|
+
--output <file> Output file path
|
|
809
|
+
|
|
810
|
+
${c.bright}Lifecycle:${c.reset} CREATE > PACKAGE > ESCROW > ACCEPT > IMPORT > FLIP
|
|
811
|
+
`);
|
|
812
|
+
return;
|
|
813
|
+
}
|
|
814
|
+
|
|
815
|
+
if (sub === 'create') {
|
|
816
|
+
const { BusinessDeed } = await import('./vault/deed.js');
|
|
817
|
+
const deed = new BusinessDeed();
|
|
818
|
+
|
|
819
|
+
const name = getFlag(args, '--name') || await promptInput('Business name: ');
|
|
820
|
+
const passphrase = getFlag(args, '--passphrase') || await promptInput('Passphrase: ');
|
|
821
|
+
const output = getFlag(args, '--output');
|
|
822
|
+
const from = getFlag(args, '--from');
|
|
823
|
+
|
|
824
|
+
let createOpts = { name, passphrase, output };
|
|
825
|
+
|
|
826
|
+
if (from) {
|
|
827
|
+
// Collect from file
|
|
828
|
+
const { collectCredentials } = await import('./vault/deed-collector.js');
|
|
829
|
+
console.log(`\n${c.bright}Collecting credentials from ${from}...${c.reset}`);
|
|
830
|
+
const collected = await collectCredentials({ envFile: from, jsonFile: from, csvFile: from });
|
|
831
|
+
createOpts.credentials = collected.credentials;
|
|
832
|
+
createOpts.envVars = collected.envVars;
|
|
833
|
+
console.log(` Found ${collected.credentialCount} credentials across ${collected.services.length} services`);
|
|
834
|
+
if (collected.services.length > 0) {
|
|
835
|
+
console.log(` Services: ${collected.services.join(', ')}`);
|
|
836
|
+
}
|
|
837
|
+
}
|
|
838
|
+
|
|
839
|
+
console.log(`\n${c.bright}Creating Business Deed...${c.reset}`);
|
|
840
|
+
try {
|
|
841
|
+
const result = await deed.create(createOpts);
|
|
842
|
+
console.log(`\n${c.green}✓ Business Deed created${c.reset}`);
|
|
843
|
+
console.log(` Business: ${c.cyan}${name}${c.reset}`);
|
|
844
|
+
console.log(` Transfer ID: ${c.cyan}${result.transferId}${c.reset}`);
|
|
845
|
+
console.log(` Seal of Truth: ${c.cyan}${result.sealHex}${c.reset}`);
|
|
846
|
+
console.log(` Services: ${result.services.join(', ') || 'none'}`);
|
|
847
|
+
console.log(` Credentials: ${result.credentialCount}`);
|
|
848
|
+
console.log(` Layers: ${result.layerCount}`);
|
|
849
|
+
console.log(` Size: ${result.containerSize} bytes`);
|
|
850
|
+
console.log(` File: ${c.yellow}${result.file}${c.reset}`);
|
|
851
|
+
} catch (err) {
|
|
852
|
+
console.log(`${c.red}Error: ${err.message}${c.reset}`);
|
|
853
|
+
process.exit(1);
|
|
854
|
+
}
|
|
855
|
+
return;
|
|
856
|
+
}
|
|
857
|
+
|
|
858
|
+
if (sub === 'open') {
|
|
859
|
+
const file = args[1];
|
|
860
|
+
if (!file) { console.log(`${c.red}Usage: deed open <file.0nv>${c.reset}`); process.exit(1); }
|
|
861
|
+
|
|
862
|
+
const { BusinessDeed } = await import('./vault/deed.js');
|
|
863
|
+
const deed = new BusinessDeed();
|
|
864
|
+
const passphrase = getFlag(args, '--passphrase') || await promptInput('Passphrase: ');
|
|
865
|
+
const layer = getFlag(args, '--layer');
|
|
866
|
+
|
|
867
|
+
try {
|
|
868
|
+
const result = await deed.open(file, passphrase, layer ? [layer] : null);
|
|
869
|
+
|
|
870
|
+
console.log(`\n${c.green}✓ Business Deed opened${c.reset}`);
|
|
871
|
+
console.log(` Transfer ID: ${c.cyan}${result.metadata.transferId}${c.reset}`);
|
|
872
|
+
console.log(` Seal valid: ${result.seal.valid ? c.green + '✓' : c.red + '✗'}${c.reset}`);
|
|
873
|
+
console.log(` Sig valid: ${result.signature.valid ? c.green + '✓' : c.red + '✗'}${c.reset}`);
|
|
874
|
+
|
|
875
|
+
if (result.deed) {
|
|
876
|
+
console.log(` Business: ${c.cyan}${result.deed.business?.name || 'Unknown'}${c.reset}`);
|
|
877
|
+
console.log(` Services: ${(result.deed.services || []).join(', ')}`);
|
|
878
|
+
console.log(` Transfers: ${(result.deed.transfer_history || []).length}`);
|
|
879
|
+
}
|
|
880
|
+
|
|
881
|
+
console.log(`\n${c.bright}Layers:${c.reset}`);
|
|
882
|
+
for (const [name, data] of Object.entries(result.layers)) {
|
|
883
|
+
if (name === 'audit_trail') continue;
|
|
884
|
+
const preview = JSON.stringify(data).substring(0, 100);
|
|
885
|
+
console.log(` ${c.cyan}${name}${c.reset}: ${preview}${preview.length >= 100 ? '...' : ''}`);
|
|
886
|
+
}
|
|
887
|
+
} catch (err) {
|
|
888
|
+
console.log(`${c.red}Error: ${err.message}${c.reset}`);
|
|
889
|
+
process.exit(1);
|
|
890
|
+
}
|
|
891
|
+
return;
|
|
892
|
+
}
|
|
893
|
+
|
|
894
|
+
if (sub === 'inspect') {
|
|
895
|
+
const file = args[1];
|
|
896
|
+
if (!file) { console.log(`${c.red}Usage: deed inspect <file.0nv>${c.reset}`); process.exit(1); }
|
|
897
|
+
|
|
898
|
+
const { BusinessDeed } = await import('./vault/deed.js');
|
|
899
|
+
const deed = new BusinessDeed();
|
|
900
|
+
|
|
901
|
+
try {
|
|
902
|
+
const info = deed.inspect(file);
|
|
903
|
+
console.log(`\n${c.bright}Business Deed Inspection${c.reset}`);
|
|
904
|
+
console.log(JSON.stringify(info, null, 2));
|
|
905
|
+
} catch (err) {
|
|
906
|
+
console.log(`${c.red}Error: ${err.message}${c.reset}`);
|
|
907
|
+
process.exit(1);
|
|
908
|
+
}
|
|
909
|
+
return;
|
|
910
|
+
}
|
|
911
|
+
|
|
912
|
+
if (sub === 'verify') {
|
|
913
|
+
const file = args[1];
|
|
914
|
+
if (!file) { console.log(`${c.red}Usage: deed verify <file.0nv>${c.reset}`); process.exit(1); }
|
|
915
|
+
|
|
916
|
+
const { BusinessDeed } = await import('./vault/deed.js');
|
|
917
|
+
const deed = new BusinessDeed();
|
|
918
|
+
|
|
919
|
+
try {
|
|
920
|
+
const v = deed.verify(file);
|
|
921
|
+
console.log(`\n${v.verified ? c.green + '✓ VERIFIED' : c.red + '✗ FAILED'}${c.reset}`);
|
|
922
|
+
console.log(` Seal of Truth: ${v.seal.valid ? c.green + 'Valid' : c.red + 'Invalid'}${c.reset} (${v.seal.algorithm})`);
|
|
923
|
+
console.log(` Signature: ${v.signature.valid ? c.green + 'Valid' : c.red + 'Invalid'}${c.reset} (${v.signature.algorithm})`);
|
|
924
|
+
console.log(` Transfer ID: ${v.transferId}`);
|
|
925
|
+
console.log(` Created: ${v.created}`);
|
|
926
|
+
console.log(` Patent: ${v.patent}`);
|
|
927
|
+
} catch (err) {
|
|
928
|
+
console.log(`${c.red}Error: ${err.message}${c.reset}`);
|
|
929
|
+
process.exit(1);
|
|
930
|
+
}
|
|
931
|
+
return;
|
|
932
|
+
}
|
|
933
|
+
|
|
934
|
+
if (sub === 'accept') {
|
|
935
|
+
const file = args[1];
|
|
936
|
+
if (!file) { console.log(`${c.red}Usage: deed accept <file.0nv>${c.reset}`); process.exit(1); }
|
|
937
|
+
|
|
938
|
+
const { BusinessDeed } = await import('./vault/deed.js');
|
|
939
|
+
const deed = new BusinessDeed();
|
|
940
|
+
|
|
941
|
+
const passphrase = getFlag(args, '--passphrase') || await promptInput('Current passphrase: ');
|
|
942
|
+
const buyerName = getFlag(args, '--buyer-name') || await promptInput('Buyer name: ');
|
|
943
|
+
const buyerEmail = getFlag(args, '--buyer-email') || await promptInput('Buyer email: ');
|
|
944
|
+
const newPassphrase = getFlag(args, '--new-passphrase');
|
|
945
|
+
|
|
946
|
+
try {
|
|
947
|
+
const result = await deed.accept(
|
|
948
|
+
file, passphrase,
|
|
949
|
+
{ name: buyerName, email: buyerEmail },
|
|
950
|
+
newPassphrase,
|
|
951
|
+
);
|
|
952
|
+
|
|
953
|
+
console.log(`\n${c.green}✓ Business Deed accepted${c.reset}`);
|
|
954
|
+
console.log(` New Transfer ID: ${c.cyan}${result.transferId}${c.reset}`);
|
|
955
|
+
console.log(` New Seal: ${c.cyan}${result.sealHex}${c.reset}`);
|
|
956
|
+
console.log(` Buyer: ${buyerName} <${buyerEmail}>`);
|
|
957
|
+
console.log(` Prev Transfer: ${result.previousTransferId}`);
|
|
958
|
+
console.log(` File: ${c.yellow}${result.file}${c.reset}`);
|
|
959
|
+
} catch (err) {
|
|
960
|
+
console.log(`${c.red}Error: ${err.message}${c.reset}`);
|
|
961
|
+
process.exit(1);
|
|
962
|
+
}
|
|
963
|
+
return;
|
|
964
|
+
}
|
|
965
|
+
|
|
966
|
+
if (sub === 'import') {
|
|
967
|
+
const file = args[1];
|
|
968
|
+
if (!file) { console.log(`${c.red}Usage: deed import <file.0nv>${c.reset}`); process.exit(1); }
|
|
969
|
+
|
|
970
|
+
const { BusinessDeed } = await import('./vault/deed.js');
|
|
971
|
+
const deed = new BusinessDeed();
|
|
972
|
+
|
|
973
|
+
const passphrase = getFlag(args, '--passphrase') || await promptInput('Passphrase: ');
|
|
974
|
+
const target = getFlag(args, '--target');
|
|
975
|
+
|
|
976
|
+
try {
|
|
977
|
+
const report = await deed.importDeed(file, passphrase, target);
|
|
978
|
+
|
|
979
|
+
console.log(`\n${report.success ? c.green + '✓ Import complete' : c.red + '✗ Import had errors'}${c.reset}`);
|
|
980
|
+
if (report.connections.written.length > 0) {
|
|
981
|
+
console.log(` Connections: ${report.connections.written.join(', ')}`);
|
|
982
|
+
}
|
|
983
|
+
if (report.envFile) {
|
|
984
|
+
console.log(` Env file: ${report.envFile.file} (${report.envFile.written} vars)`);
|
|
985
|
+
}
|
|
986
|
+
if (report.workflows.count > 0) {
|
|
987
|
+
console.log(` Workflows: ${report.workflows.count}`);
|
|
988
|
+
}
|
|
989
|
+
if (report.brain.written.length > 0) {
|
|
990
|
+
console.log(` AI Brain: ${report.brain.written.join(', ')}`);
|
|
991
|
+
}
|
|
992
|
+
if (report.deed) {
|
|
993
|
+
console.log(` Business: ${c.cyan}${report.deed.business?.name || 'Unknown'}${c.reset}`);
|
|
994
|
+
}
|
|
995
|
+
if (report.errors.length > 0) {
|
|
996
|
+
console.log(` ${c.red}Errors: ${report.errors.join(', ')}${c.reset}`);
|
|
997
|
+
}
|
|
998
|
+
} catch (err) {
|
|
999
|
+
console.log(`${c.red}Error: ${err.message}${c.reset}`);
|
|
1000
|
+
process.exit(1);
|
|
1001
|
+
}
|
|
1002
|
+
return;
|
|
1003
|
+
}
|
|
1004
|
+
|
|
1005
|
+
if (sub === 'export') {
|
|
1006
|
+
const { BusinessDeed } = await import('./vault/deed.js');
|
|
1007
|
+
const deed = new BusinessDeed();
|
|
1008
|
+
|
|
1009
|
+
const from = getFlag(args, '--from');
|
|
1010
|
+
if (!from) { console.log(`${c.red}Usage: deed export --from <file> --name <name> --passphrase <pass>${c.reset}`); process.exit(1); }
|
|
1011
|
+
|
|
1012
|
+
const name = getFlag(args, '--name') || await promptInput('Business name: ');
|
|
1013
|
+
const passphrase = getFlag(args, '--passphrase') || await promptInput('Passphrase: ');
|
|
1014
|
+
const output = getFlag(args, '--output');
|
|
1015
|
+
|
|
1016
|
+
console.log(`\n${c.bright}Exporting Business Deed from ${from}...${c.reset}`);
|
|
1017
|
+
try {
|
|
1018
|
+
const result = await deed.export(
|
|
1019
|
+
{ envFile: from, jsonFile: from, csvFile: from },
|
|
1020
|
+
{ name, passphrase, output }
|
|
1021
|
+
);
|
|
1022
|
+
|
|
1023
|
+
console.log(`\n${c.green}✓ Business Deed exported${c.reset}`);
|
|
1024
|
+
console.log(` Business: ${c.cyan}${name}${c.reset}`);
|
|
1025
|
+
console.log(` Transfer ID: ${c.cyan}${result.transferId}${c.reset}`);
|
|
1026
|
+
console.log(` Services: ${result.services.join(', ') || 'none'}`);
|
|
1027
|
+
console.log(` Credentials: ${result.credentialCount}`);
|
|
1028
|
+
console.log(` File: ${c.yellow}${result.file}${c.reset}`);
|
|
1029
|
+
} catch (err) {
|
|
1030
|
+
console.log(`${c.red}Error: ${err.message}${c.reset}`);
|
|
1031
|
+
process.exit(1);
|
|
1032
|
+
}
|
|
1033
|
+
return;
|
|
1034
|
+
}
|
|
1035
|
+
|
|
1036
|
+
console.log(`${c.red}Unknown deed command: ${sub}${c.reset}`);
|
|
1037
|
+
console.log(`Run ${c.cyan}0nmcp deed help${c.reset} for usage.`);
|
|
1038
|
+
}
|
|
1039
|
+
|
|
766
1040
|
async function handleEngine(args) {
|
|
767
1041
|
const sub = args[0];
|
|
768
1042
|
|
package/index.js
CHANGED
|
@@ -29,6 +29,7 @@ import { registerAllTools } from "./tools.js";
|
|
|
29
29
|
import { registerCrmTools } from "./crm/index.js";
|
|
30
30
|
import { registerVaultTools, autoUnseal } from "./vault/index.js";
|
|
31
31
|
import { registerContainerTools } from "./vault/tools-container.js";
|
|
32
|
+
import { registerDeedTools } from "./vault/tools-deed.js";
|
|
32
33
|
import { unsealedCache } from "./vault/cache.js";
|
|
33
34
|
import { registerEngineTools } from "./engine/index.js";
|
|
34
35
|
|
|
@@ -40,7 +41,7 @@ const workflowRunner = new WorkflowRunner(connections);
|
|
|
40
41
|
|
|
41
42
|
const server = new McpServer({
|
|
42
43
|
name: "0nMCP",
|
|
43
|
-
version: "2.
|
|
44
|
+
version: "2.1.0",
|
|
44
45
|
});
|
|
45
46
|
|
|
46
47
|
// ============================================================
|
|
@@ -80,6 +81,12 @@ registerEngineTools(server, z);
|
|
|
80
81
|
|
|
81
82
|
registerContainerTools(server, z);
|
|
82
83
|
|
|
84
|
+
// ============================================================
|
|
85
|
+
// BUSINESS DEED TOOLS (digital asset transfer system)
|
|
86
|
+
// ============================================================
|
|
87
|
+
|
|
88
|
+
registerDeedTools(server, z);
|
|
89
|
+
|
|
83
90
|
// ============================================================
|
|
84
91
|
// START SERVER (stdio transport)
|
|
85
92
|
// ============================================================
|
package/lib/stats.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "0nmcp",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"mcpName": "io.github.0nork/0nMCP",
|
|
5
5
|
"description": "Universal AI API Orchestrator — 550 tools, 26 services, portable AI Brain bundles + machine-bound vault encryption + Application Engine. The most comprehensive MCP server available. Free and open source from 0nORK.",
|
|
6
6
|
"type": "module",
|
|
@@ -73,6 +73,15 @@
|
|
|
73
73
|
},
|
|
74
74
|
"./vault/seal": {
|
|
75
75
|
"import": "./vault/seal.js"
|
|
76
|
+
},
|
|
77
|
+
"./vault/deed": {
|
|
78
|
+
"import": "./vault/deed.js"
|
|
79
|
+
},
|
|
80
|
+
"./vault/deed-collector": {
|
|
81
|
+
"import": "./vault/deed-collector.js"
|
|
82
|
+
},
|
|
83
|
+
"./vault/deed-importer": {
|
|
84
|
+
"import": "./vault/deed-importer.js"
|
|
76
85
|
}
|
|
77
86
|
},
|
|
78
87
|
"scripts": {
|
|
@@ -154,6 +163,13 @@
|
|
|
154
163
|
"sha3",
|
|
155
164
|
"argon2",
|
|
156
165
|
"digital-asset-transfer",
|
|
166
|
+
"business-deed-transfer",
|
|
167
|
+
"workflow-runtime",
|
|
168
|
+
"http-server",
|
|
169
|
+
"cli",
|
|
170
|
+
"application-engine",
|
|
171
|
+
"container",
|
|
172
|
+
"mcp-registry",
|
|
157
173
|
"0n",
|
|
158
174
|
"0nork",
|
|
159
175
|
"0nmcp"
|
|
@@ -227,6 +243,6 @@
|
|
|
227
243
|
"triggers": 93,
|
|
228
244
|
"totalCapabilities": 708,
|
|
229
245
|
"categories": 13,
|
|
230
|
-
"lastUpdated": "2026-02-
|
|
246
|
+
"lastUpdated": "2026-02-28T08:51:26.876Z"
|
|
231
247
|
}
|
|
232
248
|
}
|