@privacyscrubber/mcp-server 2.3.5 β 2.3.7
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 +78 -6
- package/index.js +411 -30
- package/install.js +80 -10
- package/manifest.json +5 -1
- package/package.json +1 -1
- package/pii-masking-run.js +1 -2
- package/ps-license-manager.cjs +1 -1
- package/ps-pii-engine.cjs +3 -3
- package/ps-pii-engine.js +3 -3
- package/scrubber-core.cjs +8 -1795
- package/server.json +2 -2
package/index.js
CHANGED
|
@@ -218,7 +218,7 @@ function checkFreeTierLimit(isPro) {
|
|
|
218
218
|
}
|
|
219
219
|
|
|
220
220
|
if (count >= FREE_TIER_DAILY_LIMIT) {
|
|
221
|
-
mcpLog(`${colors.redBold}π« [PrivacyScrubber] Free tier daily limit exhausted (${FREE_TIER_DAILY_LIMIT} requests). Request BLOCKED.${colors.reset}\n${colors.cyan}π Get a PRO key for unlimited use: https://privacyscrubber.com/pricing${colors.reset}\n`);
|
|
221
|
+
mcpLog(`${colors.redBold}π« [PrivacyScrubber] Free tier daily limit exhausted (${FREE_TIER_DAILY_LIMIT} requests). Request BLOCKED.${colors.reset}\n${colors.cyan}π Get a PRO key for unlimited use: https://privacyscrubber.com/pricing?tier=pro&utm_source=mcp&utm_medium=daily_limit&utm_campaign=pro_upgrade${colors.reset}\n`);
|
|
222
222
|
return { blocked: true, count };
|
|
223
223
|
}
|
|
224
224
|
|
|
@@ -286,8 +286,7 @@ function buildCisoAuditTelemetry(currentTokenMap = {}) {
|
|
|
286
286
|
const ipHoldings = {
|
|
287
287
|
standard: 'IETF draft-sibiryakov-ztds-protocol-00',
|
|
288
288
|
standardUrl: 'https://datatracker.ietf.org/doc/draft-sibiryakov-ztds-protocol/',
|
|
289
|
-
patent: '
|
|
290
|
-
wipoDas: 'B17B',
|
|
289
|
+
patent: "U.S. & Int'l Patents Pending (Paris Convention Priority)",
|
|
291
290
|
trademark: 'ZTDSβ’ Reg. #182655957 (ILPO Cl 9 & 42)'
|
|
292
291
|
};
|
|
293
292
|
|
|
@@ -334,24 +333,24 @@ function buildCisoAuditTelemetry(currentTokenMap = {}) {
|
|
|
334
333
|
function formatAuditReceipt(telemetry, compact = false, wasTruncated = false, charLimit = 15000) {
|
|
335
334
|
const isCompact = compact === true || process.env.PRIVACYSCRUBBER_COMPACT_RECEIPT === '1' || process.env.PRIVACYSCRUBBER_COMPACT_RECEIPT === 'true';
|
|
336
335
|
const truncationLine = wasTruncated
|
|
337
|
-
? `> * **Notice:** Input truncated to ${charLimit.toLocaleString()} chars (Free Tier Limit). Upgrade to PRO ($15/mo or $110 Lifetime), TEAMS ($99/mo) or Developer SDK ($299/mo): [privacyscrubber.com/pricing](https://privacyscrubber.com/pricing)\n`
|
|
336
|
+
? `> * **Notice:** Input truncated to ${charLimit.toLocaleString()} chars (Free Tier Limit). Upgrade to PRO ($15/mo or $110 Lifetime), TEAMS ($99/mo) or Developer SDK ($299/mo): [privacyscrubber.com/pricing](https://privacyscrubber.com/pricing?tier=teams&utm_source=mcp&utm_medium=truncation&utm_campaign=teams_upgrade)\n`
|
|
338
337
|
: '';
|
|
339
338
|
|
|
340
339
|
if (isCompact) {
|
|
341
340
|
if (telemetry.totalCount === 0) {
|
|
342
341
|
return wasTruncated
|
|
343
|
-
? `\n\n> [ZTDS: CLEAN (ZERO PII DETECTED) | TRUNCATED (${charLimit.toLocaleString()} chars) | Upgrade: https://privacyscrubber.com/pricing]\n`
|
|
342
|
+
? `\n\n> [ZTDS: CLEAN (ZERO PII DETECTED) | TRUNCATED (${charLimit.toLocaleString()} chars) | Upgrade: https://privacyscrubber.com/pricing?tier=pro&utm_source=mcp&utm_medium=truncation_compact&utm_campaign=pro_upgrade]\n`
|
|
344
343
|
: "\n\n> [ZTDS: CLEAN (ZERO PII DETECTED)]\n";
|
|
345
344
|
}
|
|
346
345
|
const entitiesList = Object.entries(telemetry.entities)
|
|
347
346
|
.map(([type, count]) => `${count} ${type}`)
|
|
348
347
|
.join(', ');
|
|
349
|
-
const truncNotice = wasTruncated ? ` | TRUNCATED (${charLimit.toLocaleString()} chars) | Upgrade: https://privacyscrubber.com/pricing` : '';
|
|
348
|
+
const truncNotice = wasTruncated ? ` | TRUNCATED (${charLimit.toLocaleString()} chars) | Upgrade: https://privacyscrubber.com/pricing?tier=pro&utm_source=mcp&utm_medium=truncation_compact&utm_campaign=pro_upgrade` : '';
|
|
350
349
|
return `\n\n> [ZTDS: ${telemetry.totalCount} masked (${entitiesList}) | Risk: ${telemetry.riskLevel} | Compliance: ${telemetry.frameworksList.join(', ')}${truncNotice}]\n`;
|
|
351
350
|
}
|
|
352
351
|
|
|
353
352
|
if (telemetry.totalCount === 0) {
|
|
354
|
-
return `\n\n> π‘οΈ **PrivacyScrubber Audit Receipt**: CLEAN (ZERO PII DETECTED)\n${truncationLine}> * β **Star on GitHub:** [moxno/privacyscrubber-mcp](https://github.com/moxno/privacyscrubber-mcp) (\`gh repo star moxno/privacyscrubber-mcp\`) | **SDK & Enterprise:** [privacyscrubber.com/sdk](https://privacyscrubber.com/sdk
|
|
353
|
+
return `\n\n> π‘οΈ **PrivacyScrubber Audit Receipt**: CLEAN (ZERO PII DETECTED)\n${truncationLine}> * β **Star on GitHub:** [moxno/privacyscrubber-mcp](https://github.com/moxno/privacyscrubber-mcp) (\`gh repo star moxno/privacyscrubber-mcp\`) | **SDK & Enterprise:** [privacyscrubber.com/sdk](https://privacyscrubber.com/sdk/?tier=sdk&utm_source=mcp&utm_medium=audit_receipt&utm_campaign=sdk_pipeline)\n`;
|
|
355
354
|
}
|
|
356
355
|
|
|
357
356
|
const entitiesList = Object.entries(telemetry.entities)
|
|
@@ -360,7 +359,7 @@ function formatAuditReceipt(telemetry, compact = false, wasTruncated = false, ch
|
|
|
360
359
|
|
|
361
360
|
const icon = telemetry.riskLevel.includes('CRITICAL') ? 'π΄' : (telemetry.riskLevel.includes('MODERATE') ? 'π ' : 'π’');
|
|
362
361
|
|
|
363
|
-
return `\n\n> π‘οΈ **PrivacyScrubber Audit Receipt**\n> * **Risk Level:** ${icon} ${telemetry.riskLevel}\n> * **Compliance Enforced:** ${telemetry.frameworksList.join(', ')}\n> * **Tokens Masked:** ${telemetry.totalCount} (${entitiesList})\n${truncationLine}> * β **Star on GitHub:** [moxno/privacyscrubber-mcp](https://github.com/moxno/privacyscrubber-mcp) (\`gh repo star moxno/privacyscrubber-mcp\`) | **SDK & Enterprise:** [privacyscrubber.com/sdk](https://privacyscrubber.com/sdk
|
|
362
|
+
return `\n\n> π‘οΈ **PrivacyScrubber Audit Receipt**\n> * **Risk Level:** ${icon} ${telemetry.riskLevel}\n> * **Compliance Enforced:** ${telemetry.frameworksList.join(', ')}\n> * **Tokens Masked:** ${telemetry.totalCount} (${entitiesList})\n${truncationLine}> * β **Star on GitHub:** [moxno/privacyscrubber-mcp](https://github.com/moxno/privacyscrubber-mcp) (\`gh repo star moxno/privacyscrubber-mcp\`) | **SDK & Enterprise:** [privacyscrubber.com/sdk](https://privacyscrubber.com/sdk/?tier=sdk&utm_source=mcp&utm_medium=audit_receipt&utm_campaign=sdk_pipeline)\n`;
|
|
364
363
|
}
|
|
365
364
|
|
|
366
365
|
function formatCefEvent(eventData = {}) {
|
|
@@ -471,6 +470,325 @@ function formatJsonlEvent(eventData = {}) {
|
|
|
471
470
|
return JSON.stringify(record);
|
|
472
471
|
}
|
|
473
472
|
|
|
473
|
+
/**
|
|
474
|
+
* Generates an executive Procurement & ROI Memorandum for CISOs, DPOs, and Engineering leadership.
|
|
475
|
+
* Compares Cloud DLP TCO ($1.5kβ$4k/mo) vs PrivacyScrubber TEAMS ($99/mo) / Developer SDK ($299/mo).
|
|
476
|
+
*
|
|
477
|
+
* @param {Object} [options]
|
|
478
|
+
* @param {'teams'|'sdk'|'both'} [options.targetTier='teams'] - Target license tier.
|
|
479
|
+
* @param {string} [options.appName] - Target system or project name.
|
|
480
|
+
* @param {string} [options.developer] - Requester name or team.
|
|
481
|
+
* @param {number} [options.teamSize=10] - Size of engineering team.
|
|
482
|
+
* @param {string} [options.estimatedVolume='50M - 500M characters/month'] - Projected token volume.
|
|
483
|
+
* @param {'markdown'|'text'} [options.format='markdown'] - Output format.
|
|
484
|
+
* @returns {string}
|
|
485
|
+
*/
|
|
486
|
+
export function generateProcurementMemo(options = {}) {
|
|
487
|
+
const {
|
|
488
|
+
targetTier = 'teams',
|
|
489
|
+
appName = 'Internal AI IDE Toolchain & Workflows',
|
|
490
|
+
developer = 'Engineering / AI Platform Team',
|
|
491
|
+
format = 'markdown',
|
|
492
|
+
teamSize = 10,
|
|
493
|
+
estimatedVolume = '50M - 500M characters/month'
|
|
494
|
+
} = options;
|
|
495
|
+
|
|
496
|
+
const normalizedTier = (targetTier || 'teams').toLowerCase();
|
|
497
|
+
const dateStr = new Date().toISOString().split('T')[0];
|
|
498
|
+
|
|
499
|
+
if (normalizedTier === 'sdk') {
|
|
500
|
+
if (format === 'text') {
|
|
501
|
+
return `MEMORANDUM: ADOPTION OF PRIVACYSCRUBBER DEVELOPER SDK (ZTDS STANDARD)
|
|
502
|
+
|
|
503
|
+
TO: Chief Information Security Officer (CISO), Data Protection Officer (DPO), VP Engineering
|
|
504
|
+
FROM: ${developer}
|
|
505
|
+
DATE: ${dateStr}
|
|
506
|
+
SUBJECT: Approval Request: Zero-Trust Data Sanitization (@privacyscrubber/sdk)
|
|
507
|
+
TARGET SYSTEM: ${appName}
|
|
508
|
+
ESTIMATED VOLUME: ${estimatedVolume}
|
|
509
|
+
|
|
510
|
+
1. EXECUTIVE SUMMARY
|
|
511
|
+
We propose standardizing on the PrivacyScrubber Developer SDK (@privacyscrubber/sdk) for in-memory Zero-Trust Data Sanitization across our AI ingestion pipelines. The SDK intercepts and redacts PII, regulatory identifiers, and cloud secrets locally in RAM before any prompt leaves our infrastructure.
|
|
512
|
+
|
|
513
|
+
2. ZERO-TRUST ARCHITECTURAL INVARIANTS
|
|
514
|
+
* Zero Network Egress: 100% local in-memory processing. Zero external API calls, zero telemetry egress, zero third-party sub-processors.
|
|
515
|
+
* In-Memory Volatility: All masking maps remain in volatile process RAM and are discarded after request completion.
|
|
516
|
+
* Sub-Millisecond Latency: Executes in <0.1ms per prompt in local RAM, eliminating latency overhead.
|
|
517
|
+
|
|
518
|
+
3. COMPLIANCE & REGULATORY COVERAGE
|
|
519
|
+
Pre-configured for 30 specialized industry profiles and compliance frameworks:
|
|
520
|
+
* GDPR (Art. 4, 9, 32) & CCPA/CPRA: Ephemeral tokenization.
|
|
521
|
+
* HIPAA (Β§164.514 Safe Harbor): MRNs, medical record codes, patient identifiers.
|
|
522
|
+
* SOC 2 Type II & ISO 27001 (A.8.11): Zero persistent unencrypted PII.
|
|
523
|
+
* PCI DSS v4.0: PAN, CVV, IBAN, bank ledger sanitization.
|
|
524
|
+
* NIST SP 800-53: Cloud API keys, JWT tokens, AWS/Stripe secret leak protection.
|
|
525
|
+
* EU AI Act (Art. 50): Data minimization and 0-byte external network transmission.
|
|
526
|
+
|
|
527
|
+
4. TOTAL COST OF OWNERSHIP (TCO) COMPARISON
|
|
528
|
+
* Cloud DLP Proxies (AWS Macie, GCP DLP, Nightfall):
|
|
529
|
+
- Cost: $1,500 - $4,000 / month (usage-based billing).
|
|
530
|
+
- Latency: +200ms - 400ms added network roundtrip per AI prompt.
|
|
531
|
+
- Sub-processor Risk: Requires vendor DPA, external network egress.
|
|
532
|
+
* PrivacyScrubber Developer SDK:
|
|
533
|
+
- Cost: $299 / month flat (or $2,990 / year) for unlimited nodes, microservices, and prompts.
|
|
534
|
+
- Latency: <0.1ms (in-process RAM).
|
|
535
|
+
- Sub-processor Risk: Zero (pure in-memory software library).
|
|
536
|
+
|
|
537
|
+
5. ACTION REQUESTED
|
|
538
|
+
Approve commercial license upgrade for ${developer} (${teamSize} engineers, unlimited backend nodes):
|
|
539
|
+
* License Tier: Developer SDK ($299/month flat or $2,990/year)
|
|
540
|
+
* Direct Procurement & License Activation: https://privacyscrubber.com/pricing?tier=sdk&utm_source=mcp_memo&utm_medium=ciso_memo&utm_campaign=sdk_procurement
|
|
541
|
+
* Enterprise / Invoicing Contact: enterprise@privacyscrubber.com
|
|
542
|
+
`;
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
return `# Internal Memo: Adoption of PrivacyScrubber Developer SDK (ZTDS Standard)
|
|
546
|
+
|
|
547
|
+
| **To** | Chief Information Security Officer (CISO), Data Protection Officer (DPO), VP Engineering |
|
|
548
|
+
| :--- | :--- |
|
|
549
|
+
| **From** | ${developer} |
|
|
550
|
+
| **Date** | ${dateStr} |
|
|
551
|
+
| **Subject** | Architectural Approval & License Procurement for Zero-Trust AI Sanitization |
|
|
552
|
+
| **Target System** | ${appName} |
|
|
553
|
+
| **Estimated Scope** | ~${teamSize} engineers / ${estimatedVolume} |
|
|
554
|
+
|
|
555
|
+
---
|
|
556
|
+
|
|
557
|
+
### 1. Executive Summary
|
|
558
|
+
We recommend adopting the **PrivacyScrubber Developer SDK** (\`@privacyscrubber/sdk\`) to enforce **Zero-Trust Data Sanitization (ZTDS)** across all internal AI pipelines, LangChain agents, microservices, and developer toolchains.
|
|
559
|
+
|
|
560
|
+
The SDK redacts PII, regulatory identifiers, and developer secrets **in-process before external API egress to OpenAI, Anthropic, or external LLM providers**, and deterministically restores original values upon response return.
|
|
561
|
+
|
|
562
|
+
---
|
|
563
|
+
|
|
564
|
+
### 2. Architectural Invariants (Zero-Trust Data Sanitization)
|
|
565
|
+
* **Zero Remote Network Egress:** 100% of sanitization and token restoration executes in local Node.js process RAM. No prompt data or telemetry ever leaves our VPC/infrastructure.
|
|
566
|
+
* **Ephemeral In-Memory Tokens:** Masking mappings (\`[EMAIL_1]\`, \`[NAME_1]\`, \`[SECRET_1]\`) are volatile and strictly scoped to request execution context.
|
|
567
|
+
* **Ultra-Low Latency:** Micro-benchmarks verify <0.1ms execution overhead per prompt, compared to 200β400ms for network-based cloud DLP proxies.
|
|
568
|
+
* **Full Reversibility:** Bidirectional round-trip reconstruction ensures downstream application logic receives intact responses without exposing sensitive data to model providers.
|
|
569
|
+
|
|
570
|
+
---
|
|
571
|
+
|
|
572
|
+
### 3. Compliance Framework Mapping
|
|
573
|
+
The SDK enforces out-of-the-box sanitization matching mandatory compliance controls:
|
|
574
|
+
* **GDPR (Regulation (EU) 2016/679) & CCPA/CPRA:** Eliminates cross-border PII transfer risk to third-party AI models.
|
|
575
|
+
* **HIPAA (Β§164.514 Safe Harbor):** Automated scrubbing of Medical Record Numbers (MRNs), patient identifiers, and health insurance IDs.
|
|
576
|
+
* **SOC 2 Type II & ISO 27001 (Control A.8.11):** Enforces data masking and prevents unauthorized logging of confidential client data.
|
|
577
|
+
* **PCI DSS v4.0:** Sanitization of payment cards, IBANs, and financial ledger data.
|
|
578
|
+
* **NIST SP 800-53:** DevOps secret interception for AWS keys, JWT tokens, database URIs, and private API keys.
|
|
579
|
+
* **EU AI Act (Art. 50):** Data minimization and audit receipt verification.
|
|
580
|
+
|
|
581
|
+
---
|
|
582
|
+
|
|
583
|
+
### 4. Financial & Architectural Comparison (TCO)
|
|
584
|
+
|
|
585
|
+
| Evaluation Factor | Traditional Cloud DLP (AWS/GCP/Nightfall) | PrivacyScrubber Developer SDK |
|
|
586
|
+
| :--- | :--- | :--- |
|
|
587
|
+
| **Pricing Model** | \$1,500 β \$4,000 / month (metered per GB/token) | **\$299 / month flat** (unlimited nodes & tokens) |
|
|
588
|
+
| **Network Egress** | Requires outbound network calls to DLP vendor | **0 bytes** (100% local Node.js process memory) |
|
|
589
|
+
| **Added Latency** | +200ms β +450ms network round-trip | **<0.1ms** (in-memory regular expressions) |
|
|
590
|
+
| **Vendor Sub-processors** | Third-party cloud vendor added to vendor list | **None** (zero-network software library) |
|
|
591
|
+
| **Deployment** | Complex API gateways and proxy configurations | \`npm install @privacyscrubber/sdk\` in 3 minutes |
|
|
592
|
+
|
|
593
|
+
---
|
|
594
|
+
|
|
595
|
+
### 5. Procurement Recommendation
|
|
596
|
+
We request approval to acquire a **Developer SDK License** (\$299/month flat or \$2,990/year) to unlock unlimited throughput across all microservices and CI/CD pipelines.
|
|
597
|
+
|
|
598
|
+
* **Direct Procurement Portal:** [https://privacyscrubber.com/pricing?tier=sdk&utm_source=mcp_memo&utm_medium=ciso_memo&utm_campaign=sdk_procurement](https://privacyscrubber.com/pricing?tier=sdk&utm_source=mcp_memo&utm_medium=ciso_memo&utm_campaign=sdk_procurement)
|
|
599
|
+
* **Procurement / Invoicing Contact:** \`enterprise@privacyscrubber.com\`
|
|
600
|
+
`;
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
if (normalizedTier === 'both') {
|
|
604
|
+
if (format === 'text') {
|
|
605
|
+
return `MEMORANDUM: ENTERPRISE ADOPTION OF PRIVACYSCRUBBER (TEAMS + DEVELOPER SDK)
|
|
606
|
+
|
|
607
|
+
TO: Chief Information Security Officer (CISO), Data Protection Officer (DPO), VP Engineering
|
|
608
|
+
FROM: ${developer}
|
|
609
|
+
DATE: ${dateStr}
|
|
610
|
+
SUBJECT: Approval Request: Comprehensive Zero-Trust Data Sanitization (TEAMS + SDK)
|
|
611
|
+
TARGET SYSTEMS: AI IDEs (Cursor, Claude Desktop, Windsurf) + Backend AI Pipelines
|
|
612
|
+
ESTIMATED VOLUME: ${estimatedVolume} across ~${teamSize} engineers
|
|
613
|
+
|
|
614
|
+
1. EXECUTIVE SUMMARY
|
|
615
|
+
We propose standardizing on PrivacyScrubber across our entire AI stack:
|
|
616
|
+
1. PrivacyScrubber TEAMS ($99/mo flat): Secures developer AI IDEs (Cursor, Claude Desktop, Windsurf, Claude Code, Zed).
|
|
617
|
+
2. PrivacyScrubber Developer SDK ($299/mo flat): In-memory sanitization for backend microservices, ETL, and RAG pipelines.
|
|
618
|
+
Combined cost is $398/mo flat, completely replacing $4,000β$8,000/mo in legacy metered cloud DLP proxies with 0 network latency.
|
|
619
|
+
|
|
620
|
+
2. ZERO-TRUST ARCHITECTURAL INVARIANTS
|
|
621
|
+
* 100% Local In-Memory Processing: 0 bytes network egress, 0 third-party sub-processors.
|
|
622
|
+
* In-Memory Token Mapping: Masking maps remain in volatile RAM.
|
|
623
|
+
* Sub-Millisecond Execution: Eliminates latency overhead on developer IDEs and microservices.
|
|
624
|
+
|
|
625
|
+
3. COMPLIANCE COVERAGE
|
|
626
|
+
Pre-configured for 30 specialized industry profiles: GDPR, CCPA/CPRA, HIPAA Safe Harbor, SOC 2 Type II, PCI DSS v4.0, NIST SP 800-53, EU AI Act Art. 50.
|
|
627
|
+
|
|
628
|
+
4. TOTAL COST OF OWNERSHIP (TCO) COMPARISON
|
|
629
|
+
* Traditional Cloud DLP: $4,000 - $8,000 / month (metered usage + per-seat IDE licenses).
|
|
630
|
+
* PrivacyScrubber Bundle (TEAMS + SDK): $398 / month flat (unlimited engineers + unlimited backend nodes).
|
|
631
|
+
|
|
632
|
+
5. ACTION REQUESTED
|
|
633
|
+
Approve enterprise commercial license activation ($398/month flat):
|
|
634
|
+
* TEAMS Portal ($99/mo): https://privacyscrubber.com/pricing?tier=teams&utm_source=mcp_memo&utm_medium=ciso_memo&utm_campaign=bundle_procurement
|
|
635
|
+
* SDK Portal ($299/mo): https://privacyscrubber.com/pricing?tier=sdk&utm_source=mcp_memo&utm_medium=ciso_memo&utm_campaign=bundle_procurement
|
|
636
|
+
* Enterprise Contact: enterprise@privacyscrubber.com
|
|
637
|
+
`;
|
|
638
|
+
}
|
|
639
|
+
|
|
640
|
+
return `# Internal Memo: Enterprise Adoption of PrivacyScrubber (TEAMS + Developer SDK)
|
|
641
|
+
|
|
642
|
+
| **To** | Chief Information Security Officer (CISO), Data Protection Officer (DPO), VP Engineering |
|
|
643
|
+
| :--- | :--- |
|
|
644
|
+
| **From** | ${developer} |
|
|
645
|
+
| **Date** | ${dateStr} |
|
|
646
|
+
| **Subject** | Comprehensive Approval: Zero-Trust AI Sanitization (IDE Agents + Backend Pipelines) |
|
|
647
|
+
| **Target Systems** | ${appName} |
|
|
648
|
+
| **Estimated Scope** | ~${teamSize} engineers / ${estimatedVolume} |
|
|
649
|
+
|
|
650
|
+
---
|
|
651
|
+
|
|
652
|
+
### 1. Executive Summary
|
|
653
|
+
We recommend standardizing on **PrivacyScrubber** across our full technology stack to enforce **Zero-Trust Data Sanitization (ZTDS)**:
|
|
654
|
+
1. **PrivacyScrubber TEAMS (\$99/month flat):** Secures all developer AI IDEs (Cursor, Claude Desktop, Windsurf, Claude Code, Zed) with unlimited seats.
|
|
655
|
+
2. **PrivacyScrubber Developer SDK (\$299/month flat):** In-memory PII/secret scrubbing for backend microservices, ETL pipelines, and RAG vector databases.
|
|
656
|
+
|
|
657
|
+
Combined TCO is **\$398/month flat**, replacing **\$4,000β\$8,000/month** in legacy metered cloud DLP tools while reducing latency to <0.1ms.
|
|
658
|
+
|
|
659
|
+
---
|
|
660
|
+
|
|
661
|
+
### 2. Architectural Invariants (Zero-Trust Data Sanitization)
|
|
662
|
+
* **Zero Remote Network Egress:** 100% of sanitization executes in local process RAM (IDE developer machines and backend container VPCs).
|
|
663
|
+
* **0 Bytes Third-Party Sub-processor Liability:** Eliminates GDPR Article 28 processor transfer risks.
|
|
664
|
+
* **Deterministic Round-Trip Restoration:** Automatically detokenizes placeholders in response payloads.
|
|
665
|
+
|
|
666
|
+
---
|
|
667
|
+
|
|
668
|
+
### 3. Financial & Architectural Comparison (TCO)
|
|
669
|
+
|
|
670
|
+
| Evaluation Metric | Enterprise Cloud DLP (Nightfall, AWS Macie, GCP DLP) | PrivacyScrubber Enterprise Bundle (TEAMS + SDK) |
|
|
671
|
+
| :--- | :--- | :--- |
|
|
672
|
+
| **Monthly Cost** | \$4,000 β \$8,000 / month (per-seat + usage metered) | **\$398 / month flat** (unlimited seats & nodes) |
|
|
673
|
+
| **Network Egress** | Outbound traffic to third-party vendor clouds | **0 bytes** (100% volatile in-memory RAM) |
|
|
674
|
+
| **Added Latency** | +200ms β +450ms network round-trip per prompt | **<0.1ms** (in-process regular expression engine) |
|
|
675
|
+
| **Vendor Sub-processors** | Added to corporate DPA vendor roster | **None** (zero-network software libraries) |
|
|
676
|
+
|
|
677
|
+
---
|
|
678
|
+
|
|
679
|
+
### 4. Procurement Recommendation
|
|
680
|
+
We request approval to activate the enterprise bundle:
|
|
681
|
+
* **TEAMS License (\$99/mo flat):** [https://privacyscrubber.com/pricing?tier=teams&utm_source=mcp_memo&utm_medium=ciso_memo&utm_campaign=bundle_procurement](https://privacyscrubber.com/pricing?tier=teams&utm_source=mcp_memo&utm_medium=ciso_memo&utm_campaign=bundle_procurement)
|
|
682
|
+
* **Developer SDK License (\$299/mo flat):** [https://privacyscrubber.com/pricing?tier=sdk&utm_source=mcp_memo&utm_medium=ciso_memo&utm_campaign=bundle_procurement](https://privacyscrubber.com/pricing?tier=sdk&utm_source=mcp_memo&utm_medium=ciso_memo&utm_campaign=bundle_procurement)
|
|
683
|
+
* **Enterprise / Invoicing Contact:** \`enterprise@privacyscrubber.com\`
|
|
684
|
+
`;
|
|
685
|
+
}
|
|
686
|
+
|
|
687
|
+
// Default: TEAMS ($99/mo flat)
|
|
688
|
+
if (format === 'text') {
|
|
689
|
+
return `MEMORANDUM: ADOPTION OF PRIVACYSCRUBBER TEAMS FOR AI IDES (ZTDS STANDARD)
|
|
690
|
+
|
|
691
|
+
TO: Chief Information Security Officer (CISO), Data Protection Officer (DPO), VP Engineering
|
|
692
|
+
FROM: ${developer}
|
|
693
|
+
DATE: ${dateStr}
|
|
694
|
+
SUBJECT: Approval Request: Zero-Trust AI IDE Protection & Team Governance (@privacyscrubber/mcp-server)
|
|
695
|
+
TARGET SYSTEM: ${appName}
|
|
696
|
+
ESTIMATED SCOPE: ~${teamSize} engineers / ${estimatedVolume}
|
|
697
|
+
|
|
698
|
+
1. EXECUTIVE SUMMARY
|
|
699
|
+
We propose standardizing on PrivacyScrubber TEAMS across our engineering organization for AI IDEs (Cursor, Claude Desktop, Windsurf, Claude Code, Zed, Copilot). PrivacyScrubber intercepts and scrubs proprietary source code, cloud credentials, database connection strings, and customer PII locally in developer RAM before any prompt leaves the developer's workstation.
|
|
700
|
+
|
|
701
|
+
2. ZERO-TRUST ARCHITECTURAL INVARIANTS
|
|
702
|
+
* 100% Local In-Memory Processing: 0 bytes network egress. All redaction runs directly in developer RAM via the MCP stdio protocol.
|
|
703
|
+
* Bidirectional Round-Trip Detokenization: Restores authentic secrets locally in memory before showing the AI response to the developer.
|
|
704
|
+
* In-Memory Volatility: All session token mappings remain in volatile process RAM and are discarded upon session close.
|
|
705
|
+
* Zero Sub-Processor Risk: Eliminates third-party DLP data processor liability (GDPR Art. 28).
|
|
706
|
+
|
|
707
|
+
3. COMPLIANCE & REGULATORY COVERAGE
|
|
708
|
+
Pre-configured for 30 specialized industry profiles and compliance frameworks:
|
|
709
|
+
* GDPR (Art. 4, 9, 32) & CCPA/CPRA: Ephemeral tokenization.
|
|
710
|
+
* HIPAA (Β§164.514 Safe Harbor): MRNs, medical record codes, patient identifiers.
|
|
711
|
+
* SOC 2 Type II & ISO 27001 (A.8.11): Zero persistent unencrypted PII.
|
|
712
|
+
* PCI DSS v4.0: PAN, CVV, IBAN, bank ledger sanitization.
|
|
713
|
+
* NIST SP 800-53: Cloud API keys, JWT tokens, AWS/Stripe secret leak protection.
|
|
714
|
+
* EU AI Act (Art. 50): Data minimization and 0-byte external network transmission.
|
|
715
|
+
|
|
716
|
+
4. TOTAL COST OF OWNERSHIP (TCO) COMPARISON
|
|
717
|
+
* Per-Seat Enterprise DLP (Nightfall, Cyberhaven, AWS Macie):
|
|
718
|
+
- Cost: $30 - $60 / developer / month ($300 - $600/mo for 10 devs; $3,000/mo for 50 devs).
|
|
719
|
+
- Latency: +200ms - 400ms added network roundtrip per AI interaction.
|
|
720
|
+
- Sub-processor Risk: Requires vendor DPA, external network egress.
|
|
721
|
+
* PrivacyScrubber TEAMS:
|
|
722
|
+
- Cost: $99 / month flat for the ENTIRE engineering team (unlimited seats and agents).
|
|
723
|
+
- Latency: <0.1ms (in-process RAM).
|
|
724
|
+
- Sub-processor Risk: Zero (pure local stdio MCP server).
|
|
725
|
+
|
|
726
|
+
5. ACTION REQUESTED
|
|
727
|
+
Approve commercial license upgrade for ${developer} (~${teamSize} engineers, unlimited seats):
|
|
728
|
+
* License Tier: PrivacyScrubber TEAMS ($99/month flat)
|
|
729
|
+
* Direct Procurement & License Activation: https://privacyscrubber.com/pricing?tier=teams&utm_source=mcp_memo&utm_medium=ciso_memo&utm_campaign=teams_procurement
|
|
730
|
+
* Enterprise / Invoicing Contact: enterprise@privacyscrubber.com
|
|
731
|
+
`;
|
|
732
|
+
}
|
|
733
|
+
|
|
734
|
+
return `# Internal Memo: Adoption of PrivacyScrubber TEAMS for AI IDEs (ZTDS Standard)
|
|
735
|
+
|
|
736
|
+
| **To** | Chief Information Security Officer (CISO), Data Protection Officer (DPO), VP Engineering |
|
|
737
|
+
| :--- | :--- |
|
|
738
|
+
| **From** | ${developer} |
|
|
739
|
+
| **Date** | ${dateStr} |
|
|
740
|
+
| **Subject** | Architectural Approval & License Procurement for Zero-Trust AI IDE Protection |
|
|
741
|
+
| **Target System** | ${appName} |
|
|
742
|
+
| **Estimated Scope** | ~${teamSize} engineers / ${estimatedVolume} |
|
|
743
|
+
|
|
744
|
+
---
|
|
745
|
+
|
|
746
|
+
### 1. Executive Summary
|
|
747
|
+
We recommend adopting **PrivacyScrubber TEAMS** (\`@privacyscrubber/mcp-server\`) to enforce **Zero-Trust Data Sanitization (ZTDS)** across all developer AI IDEs (Cursor, Claude Desktop, Windsurf, Claude Code, Zed, Copilot).
|
|
748
|
+
|
|
749
|
+
PrivacyScrubber intercepts and scrubs proprietary source code, cloud credentials (AWS, JWT, Stripe), database connection strings, and customer PII **locally in developer RAM before external API transmission to OpenAI, Anthropic, or model providers**, and deterministically restores authentic values upon response return.
|
|
750
|
+
|
|
751
|
+
---
|
|
752
|
+
|
|
753
|
+
### 2. Architectural Invariants (Zero-Trust Data Sanitization)
|
|
754
|
+
* **Zero Remote Network Egress:** 100% of sanitization and token restoration executes in local developer workstation RAM via the MCP stdio protocol. No code or credentials ever leave our machines.
|
|
755
|
+
* **Ephemeral In-Memory Tokens:** Masking mappings (\`[EMAIL_1]\`, \`[NAME_1]\`, \`[SECRET_1]\`) are volatile and strictly scoped to request execution context.
|
|
756
|
+
* **Sub-Millisecond Execution:** Micro-benchmarks verify <0.1ms execution overhead per prompt, completely eliminating latency impact on developer flow.
|
|
757
|
+
* **Zero Sub-processor Overhead:** Operates with 0 bytes outbound network traffic, eliminating GDPR Article 28 data processor liability.
|
|
758
|
+
|
|
759
|
+
---
|
|
760
|
+
|
|
761
|
+
### 3. Compliance Framework Mapping
|
|
762
|
+
PrivacyScrubber enforces out-of-the-box sanitization matching mandatory compliance controls:
|
|
763
|
+
* **GDPR (Regulation (EU) 2016/679) & CCPA/CPRA:** Eliminates cross-border PII transfer risk to third-party AI models.
|
|
764
|
+
* **HIPAA (Β§164.514 Safe Harbor):** Automated scrubbing of Medical Record Numbers (MRNs), patient identifiers, and health insurance IDs.
|
|
765
|
+
* **SOC 2 Type II & ISO 27001 (Control A.8.11):** Enforces data masking and prevents unauthorized logging of confidential client data.
|
|
766
|
+
* **PCI DSS v4.0:** Sanitization of payment cards, IBANs, and financial ledger data.
|
|
767
|
+
* **NIST SP 800-53:** DevOps secret interception for AWS keys, JWT tokens, database URIs, and private API keys.
|
|
768
|
+
* **EU AI Act (Art. 50):** Data minimization and audit receipt verification.
|
|
769
|
+
|
|
770
|
+
---
|
|
771
|
+
|
|
772
|
+
### 4. Financial & Architectural Comparison (TCO)
|
|
773
|
+
|
|
774
|
+
| Evaluation Factor | Traditional Per-Seat DLP (Nightfall, Cyberhaven) | PrivacyScrubber TEAMS |
|
|
775
|
+
| :--- | :--- | :--- |
|
|
776
|
+
| **Pricing Model** | \$30 β \$60 / user / month (\$300β\$600/mo for 10 devs) | **\$99 / month flat** (unlimited seats & agents) |
|
|
777
|
+
| **Network Egress** | Outbound network calls to vendor cloud inspection proxy | **0 bytes** (100% local workstation RAM) |
|
|
778
|
+
| **Added Latency** | +200ms β +450ms network round-trip | **<0.1ms** (in-memory regular expressions) |
|
|
779
|
+
| **Vendor Sub-processors** | Third-party cloud vendor added to vendor list | **None** (100% local stdio software) |
|
|
780
|
+
| **Deployment** | Complex enterprise proxy configuration | \`npx @privacyscrubber/mcp-server init\` in 30 seconds |
|
|
781
|
+
|
|
782
|
+
---
|
|
783
|
+
|
|
784
|
+
### 5. Procurement Recommendation
|
|
785
|
+
We request approval to acquire a **PrivacyScrubber TEAMS License** (\$99/month flat) to unlock centralized governance and unlimited protection for our engineering team.
|
|
786
|
+
|
|
787
|
+
* **Direct Procurement Portal:** [https://privacyscrubber.com/pricing?tier=teams&utm_source=mcp_memo&utm_medium=ciso_memo&utm_campaign=teams_procurement](https://privacyscrubber.com/pricing?tier=teams&utm_source=mcp_memo&utm_medium=ciso_memo&utm_campaign=teams_procurement)
|
|
788
|
+
* **Procurement / Invoicing Contact:** \`enterprise@privacyscrubber.com\`
|
|
789
|
+
`;
|
|
790
|
+
}
|
|
791
|
+
|
|
474
792
|
// Create the MCP server
|
|
475
793
|
const server = new Server(
|
|
476
794
|
{
|
|
@@ -1027,6 +1345,42 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
|
1027
1345
|
}
|
|
1028
1346
|
}
|
|
1029
1347
|
}
|
|
1348
|
+
},
|
|
1349
|
+
{
|
|
1350
|
+
name: "generate_procurement_memo",
|
|
1351
|
+
description: "Zero-Trust Enterprise Procurement: Generates an executive-ready Procurement & ROI Memorandum for Chief Information Security Officers (CISO), Data Protection Officers (DPO), and VP of Engineering. Compares TCO of traditional Cloud DLP ($1.5kβ$4k/mo) vs PrivacyScrubber TEAMS ($99/mo flat) or Developer SDK ($299/mo flat), citing statutory frameworks (GDPR Art. 4/28, HIPAA Β§164.514, SOC 2 Type II, PCI DSS v4.0, NIST SP 800-53, EU AI Act Art. 50).",
|
|
1352
|
+
inputSchema: {
|
|
1353
|
+
type: "object",
|
|
1354
|
+
properties: {
|
|
1355
|
+
target_tier: {
|
|
1356
|
+
type: "string",
|
|
1357
|
+
enum: ["teams", "sdk", "both"],
|
|
1358
|
+
description: "Target license tier: 'teams' ($99/mo flat, for Cursor/Claude/Windsurf/IDE agents), 'sdk' ($299/mo flat, for backend microservices/RAG pipelines), or 'both'. Defaults to 'teams'."
|
|
1359
|
+
},
|
|
1360
|
+
app_name: {
|
|
1361
|
+
type: "string",
|
|
1362
|
+
description: "Target project, repository, or system name (e.g. 'Engineering AI Toolchain & Autonomous Agents'). Defaults to 'Internal AI IDE Toolchain & Workflows'."
|
|
1363
|
+
},
|
|
1364
|
+
developer: {
|
|
1365
|
+
type: "string",
|
|
1366
|
+
description: "Requester name, role, or team (e.g. 'Engineering Platform Team'). Defaults to 'Engineering / AI Platform Team'."
|
|
1367
|
+
},
|
|
1368
|
+
team_size: {
|
|
1369
|
+
type: "number",
|
|
1370
|
+
description: "Size of engineering team / seats. Defaults to 10."
|
|
1371
|
+
},
|
|
1372
|
+
estimated_volume: {
|
|
1373
|
+
type: "string",
|
|
1374
|
+
description: "Projected prompt or token volume. Defaults to '50M - 500M characters/month'."
|
|
1375
|
+
},
|
|
1376
|
+
format: {
|
|
1377
|
+
type: "string",
|
|
1378
|
+
enum: ["markdown", "text"],
|
|
1379
|
+
description: "Output format: 'markdown' (default) or 'text'."
|
|
1380
|
+
}
|
|
1381
|
+
},
|
|
1382
|
+
required: []
|
|
1383
|
+
}
|
|
1030
1384
|
}
|
|
1031
1385
|
]
|
|
1032
1386
|
};
|
|
@@ -1281,13 +1635,13 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
1281
1635
|
if (limitStatus.blocked) {
|
|
1282
1636
|
return {
|
|
1283
1637
|
isError: true,
|
|
1284
|
-
content: [{ type: "text", text: `Error: Free tier daily limit exhausted (${FREE_TIER_DAILY_LIMIT} requests). Please set your PRO license key to continue. Get a key at: https://privacyscrubber.com/pricing` }]
|
|
1638
|
+
content: [{ type: "text", text: `Error: Free tier daily limit exhausted (${FREE_TIER_DAILY_LIMIT} requests). Please set your PRO license key to continue. Get a key at: https://privacyscrubber.com/pricing?tier=pro&utm_source=mcp&utm_medium=daily_limit&utm_campaign=pro_upgrade` }]
|
|
1285
1639
|
};
|
|
1286
1640
|
}
|
|
1287
1641
|
|
|
1288
1642
|
const charLimit = (isAdvanced && !isAutoElevated && !license.isPro) ? 5000 : 15000;
|
|
1289
1643
|
if (isAdvanced && !license.isPro) {
|
|
1290
|
-
mcpLog(`${colors.yellowBold}[PrivacyScrubber] Profile '${targetProfile}' active on Free Tier (5,000 char trial quota).${colors.reset}\n${colors.cyan}[Upgrade] Commercial TEAMS ($99/mo flat) & Developer SDK ($299/mo): https://privacyscrubber.com/pricing${colors.reset}\n`);
|
|
1644
|
+
mcpLog(`${colors.yellowBold}[PrivacyScrubber] Profile '${targetProfile}' active on Free Tier (5,000 char trial quota).${colors.reset}\n${colors.cyan}[Upgrade] Commercial TEAMS ($99/mo flat) & Developer SDK ($299/mo): https://privacyscrubber.com/pricing?tier=teams&utm_source=mcp&utm_medium=profile_quota&utm_campaign=teams_upgrade${colors.reset}\n`);
|
|
1291
1645
|
}
|
|
1292
1646
|
|
|
1293
1647
|
const { processedText, wasTruncated } = truncateIfFree(text, license.isPro, charLimit);
|
|
@@ -1452,13 +1806,13 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
1452
1806
|
if (limitStatus.blocked) {
|
|
1453
1807
|
return {
|
|
1454
1808
|
isError: true,
|
|
1455
|
-
content: [{ type: "text", text: `Error: Free tier daily limit exhausted (${FREE_TIER_DAILY_LIMIT} requests). Please set your PRO license key to continue. Get a key at: https://privacyscrubber.com/pricing` }]
|
|
1809
|
+
content: [{ type: "text", text: `Error: Free tier daily limit exhausted (${FREE_TIER_DAILY_LIMIT} requests). Please set your PRO license key to continue. Get a key at: https://privacyscrubber.com/pricing?tier=pro&utm_source=mcp&utm_medium=daily_limit&utm_campaign=pro_upgrade` }]
|
|
1456
1810
|
};
|
|
1457
1811
|
}
|
|
1458
1812
|
|
|
1459
1813
|
const charLimit = (isAdvanced && !license.isPro) ? 5000 : 15000;
|
|
1460
1814
|
if (isAdvanced && !license.isPro) {
|
|
1461
|
-
mcpLog(`${colors.yellowBold}[PrivacyScrubber] Profile '${targetProfile}' active on Free Tier (5,000 char trial quota).${colors.reset}\n${colors.cyan}[Upgrade] Commercial TEAMS ($99/mo flat) & Developer SDK ($299/mo): https://privacyscrubber.com/pricing${colors.reset}\n`);
|
|
1815
|
+
mcpLog(`${colors.yellowBold}[PrivacyScrubber] Profile '${targetProfile}' active on Free Tier (5,000 char trial quota).${colors.reset}\n${colors.cyan}[Upgrade] Commercial TEAMS ($99/mo flat) & Developer SDK ($299/mo): https://privacyscrubber.com/pricing?tier=teams&utm_source=mcp&utm_medium=profile_quota&utm_campaign=teams_upgrade${colors.reset}\n`);
|
|
1462
1816
|
}
|
|
1463
1817
|
|
|
1464
1818
|
const { processedText: processedContent, wasTruncated } = truncateIfFree(content, license.isPro, charLimit);
|
|
@@ -1495,7 +1849,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
1495
1849
|
content: [
|
|
1496
1850
|
{
|
|
1497
1851
|
type: "text",
|
|
1498
|
-
text: `π [PrivacyScrubber PRO] Sanitizing ${isPdf ? 'PDF' : 'Excel/XLSX'} files is a PRO feature.\n\nπ Set your PRIVACYSCRUBBER_KEY environment variable to a valid PRO license key.\nπ Upgrade at: https://privacyscrubber.com/pricing?utm_source=mcp_cli&utm_medium=
|
|
1852
|
+
text: `π [PrivacyScrubber PRO] Sanitizing ${isPdf ? 'PDF' : 'Excel/XLSX'} files is a PRO feature.\n\nπ Set your PRIVACYSCRUBBER_KEY environment variable to a valid PRO license key.\nπ Upgrade at: https://privacyscrubber.com/pricing?tier=pro&utm_source=mcp_cli&utm_medium=file_type&utm_campaign=pro_upgrade\nπ Alternatively, sanitize plain text, code, CSV, and DOCX files for free.`
|
|
1499
1853
|
}
|
|
1500
1854
|
]
|
|
1501
1855
|
};
|
|
@@ -1605,13 +1959,13 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
1605
1959
|
if (limitStatus.blocked) {
|
|
1606
1960
|
return {
|
|
1607
1961
|
isError: true,
|
|
1608
|
-
content: [{ type: "text", text: `Error: Free tier daily limit exhausted (${FREE_TIER_DAILY_LIMIT} requests). Please set your PRO license key to continue. Get a key at: https://privacyscrubber.com/pricing` }]
|
|
1962
|
+
content: [{ type: "text", text: `Error: Free tier daily limit exhausted (${FREE_TIER_DAILY_LIMIT} requests). Please set your PRO license key to continue. Get a key at: https://privacyscrubber.com/pricing?tier=pro&utm_source=mcp&utm_medium=daily_limit&utm_campaign=pro_upgrade` }]
|
|
1609
1963
|
};
|
|
1610
1964
|
}
|
|
1611
1965
|
|
|
1612
1966
|
const charLimit = (isAdvanced && !isAutoElevated && !license.isPro) ? 5000 : 15000;
|
|
1613
1967
|
if (isAdvanced && !license.isPro) {
|
|
1614
|
-
mcpLog(`${colors.yellowBold}[PrivacyScrubber] Profile '${targetProfile}' active on Free Tier (5,000 char trial quota).${colors.reset}\n${colors.cyan}[Upgrade] Commercial TEAMS ($99/mo flat) & Developer SDK ($299/mo): https://privacyscrubber.com/pricing${colors.reset}\n`);
|
|
1968
|
+
mcpLog(`${colors.yellowBold}[PrivacyScrubber] Profile '${targetProfile}' active on Free Tier (5,000 char trial quota).${colors.reset}\n${colors.cyan}[Upgrade] Commercial TEAMS ($99/mo flat) & Developer SDK ($299/mo): https://privacyscrubber.com/pricing?tier=teams&utm_source=mcp&utm_medium=profile_quota&utm_campaign=teams_upgrade${colors.reset}\n`);
|
|
1615
1969
|
}
|
|
1616
1970
|
|
|
1617
1971
|
const { processedText: processedContent2, wasTruncated } = truncateIfFree(content, license.isPro, charLimit);
|
|
@@ -1653,7 +2007,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
1653
2007
|
if (limitStatus.blocked) {
|
|
1654
2008
|
return {
|
|
1655
2009
|
isError: true,
|
|
1656
|
-
content: [{ type: "text", text: `Error: Free tier daily limit exhausted (${FREE_TIER_DAILY_LIMIT} requests). Please set your PRO license key to continue. Get a key at: https://privacyscrubber.com/pricing` }]
|
|
2010
|
+
content: [{ type: "text", text: `Error: Free tier daily limit exhausted (${FREE_TIER_DAILY_LIMIT} requests). Please set your PRO license key to continue. Get a key at: https://privacyscrubber.com/pricing?tier=pro&utm_source=mcp&utm_medium=daily_limit&utm_campaign=pro_upgrade` }]
|
|
1657
2011
|
};
|
|
1658
2012
|
}
|
|
1659
2013
|
const localSessionMap = {};
|
|
@@ -1692,7 +2046,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
1692
2046
|
}
|
|
1693
2047
|
|
|
1694
2048
|
if (isSecretLeak) {
|
|
1695
|
-
return { isError: true, content: [{ type: "text", text: `Error: API Key or Secret detected. Sanitization of raw secrets requires PRO Profile. Upgrade at https://privacyscrubber.com/pricing?utm_source=mcp_cli&utm_medium=
|
|
2049
|
+
return { isError: true, content: [{ type: "text", text: `Error: API Key or Secret detected. Sanitization of raw secrets requires PRO Profile. Upgrade at https://privacyscrubber.com/pricing?tier=pro&utm_source=mcp_cli&utm_medium=secrets_detected&utm_campaign=pro_upgrade` }] };
|
|
1696
2050
|
}
|
|
1697
2051
|
|
|
1698
2052
|
if (!no_backup) {
|
|
@@ -1825,12 +2179,12 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
1825
2179
|
lines.push(
|
|
1826
2180
|
'β β
PRO is active. All features unlocked. β',
|
|
1827
2181
|
'β To regenerate your key or manage billing: β',
|
|
1828
|
-
'β https://privacyscrubber.com/pricing?utm_source=
|
|
2182
|
+
'β https://privacyscrubber.com/pricing?tier=pro&utm_source=mcp_status&utm_medium=terminalβ'
|
|
1829
2183
|
);
|
|
1830
2184
|
} else {
|
|
1831
2185
|
lines.push(
|
|
1832
2186
|
'β π³ Upgrade to PRO β $110 Lifetime β',
|
|
1833
|
-
'β https://privacyscrubber.com/pricing?utm_source=
|
|
2187
|
+
'β https://privacyscrubber.com/pricing?tier=pro&utm_source=mcp_status&utm_medium=terminalβ',
|
|
1834
2188
|
'β βββββββββββββββββββββββββββββββββββββββββββββββββββ£',
|
|
1835
2189
|
'β After purchase, add your key to MCP config: β',
|
|
1836
2190
|
'β β',
|
|
@@ -1892,7 +2246,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
1892
2246
|
if (limitStatus.blocked) {
|
|
1893
2247
|
return {
|
|
1894
2248
|
isError: true,
|
|
1895
|
-
content: [{ type: "text", text: `Error: Free tier daily limit exhausted (${FREE_TIER_DAILY_LIMIT} requests). Please set your PRO license key to continue. Get a key at: https://privacyscrubber.com/pricing` }]
|
|
2249
|
+
content: [{ type: "text", text: `Error: Free tier daily limit exhausted (${FREE_TIER_DAILY_LIMIT} requests). Please set your PRO license key to continue. Get a key at: https://privacyscrubber.com/pricing?tier=pro&utm_source=mcp&utm_medium=daily_limit&utm_campaign=pro_upgrade` }]
|
|
1896
2250
|
};
|
|
1897
2251
|
}
|
|
1898
2252
|
|
|
@@ -2050,7 +2404,7 @@ ${telemetry.frameworksList.map(f => `- **${f}**`).join('\n')}
|
|
|
2050
2404
|
if (limitStatus.blocked) {
|
|
2051
2405
|
return {
|
|
2052
2406
|
isError: true,
|
|
2053
|
-
content: [{ type: "text", text: `Error: Free tier daily limit exhausted (${FREE_TIER_DAILY_LIMIT} requests). Get a PRO key at https://privacyscrubber.com/pricing` }]
|
|
2407
|
+
content: [{ type: "text", text: `Error: Free tier daily limit exhausted (${FREE_TIER_DAILY_LIMIT} requests). Get a PRO key at https://privacyscrubber.com/pricing?tier=pro&utm_source=mcp&utm_medium=daily_limit&utm_campaign=pro_upgrade` }]
|
|
2054
2408
|
};
|
|
2055
2409
|
}
|
|
2056
2410
|
|
|
@@ -2134,7 +2488,7 @@ ${telemetry.frameworksList.map(f => `- **${f}**`).join('\n')}
|
|
|
2134
2488
|
if (limitStatus.blocked) {
|
|
2135
2489
|
return {
|
|
2136
2490
|
isError: true,
|
|
2137
|
-
content: [{ type: "text", text: `Error: Free tier daily limit exhausted. Get a PRO key at https://privacyscrubber.com/pricing` }]
|
|
2491
|
+
content: [{ type: "text", text: `Error: Free tier daily limit exhausted (${FREE_TIER_DAILY_LIMIT} requests). Get a PRO key at https://privacyscrubber.com/pricing?tier=pro&utm_source=mcp&utm_medium=daily_limit&utm_campaign=pro_upgrade` }]
|
|
2138
2492
|
};
|
|
2139
2493
|
}
|
|
2140
2494
|
|
|
@@ -2178,7 +2532,7 @@ ${telemetry.frameworksList.map(f => `- **${f}**`).join('\n')}
|
|
|
2178
2532
|
if (limitStatus.blocked) {
|
|
2179
2533
|
return {
|
|
2180
2534
|
isError: true,
|
|
2181
|
-
content: [{ type: "text", text: `Error: Free tier daily limit exhausted. Get a PRO key at https://privacyscrubber.com/pricing` }]
|
|
2535
|
+
content: [{ type: "text", text: `Error: Free tier daily limit exhausted (${FREE_TIER_DAILY_LIMIT} requests). Get a PRO key at https://privacyscrubber.com/pricing?tier=pro&utm_source=mcp&utm_medium=daily_limit&utm_campaign=pro_upgrade` }]
|
|
2182
2536
|
};
|
|
2183
2537
|
}
|
|
2184
2538
|
|
|
@@ -2658,8 +3012,8 @@ Before reading sensitive files, running terminal commands that may print credent
|
|
|
2658
3012
|
zero_egress_verified: true,
|
|
2659
3013
|
verification_url: `https://privacyscrubber.com/features/audit-receipt/#verify?hash=${sessionHash.substring(0, 16)}`,
|
|
2660
3014
|
licensing_and_governance: {
|
|
2661
|
-
teams_governance_url: "https://privacyscrubber.com/teams?
|
|
2662
|
-
sdk_pipeline_url: "https://privacyscrubber.com/sdk/?
|
|
3015
|
+
teams_governance_url: "https://privacyscrubber.com/teams?tier=teams&utm_source=mcp_audit_export&utm_medium=json&utm_campaign=teams_upgrade",
|
|
3016
|
+
sdk_pipeline_url: "https://privacyscrubber.com/sdk/?tier=sdk&utm_source=mcp_audit_export&utm_medium=json&utm_campaign=sdk_pipeline"
|
|
2663
3017
|
}
|
|
2664
3018
|
}, null, 2);
|
|
2665
3019
|
} else if (format === "markdown") {
|
|
@@ -2690,8 +3044,8 @@ ${telemetry.frameworksList.map(f => `- **${f}**`).join('\n')}
|
|
|
2690
3044
|
3. **Cryptographic Verification:** Tamper-evident session verification hash: \`${sessionHash}\`
|
|
2691
3045
|
|
|
2692
3046
|
### π’ Enterprise & Team Governance
|
|
2693
|
-
* **Team Governance & Encrypted Handoff:** Centrally deploy redaction rules, audit logs, and zero-knowledge session handoff with **PrivacyScrubber TEAMS** ($99/mo flat): [privacyscrubber.com/teams](https://privacyscrubber.com/teams?
|
|
2694
|
-
* **Backend Microservices & RAG Pipelines:** Integrate in-memory sanitization (<1ms) into your Node.js/Python infrastructure with **Developer SDK** ($299/mo): [privacyscrubber.com/sdk](https://privacyscrubber.com/sdk/?
|
|
3047
|
+
* **Team Governance & Encrypted Handoff:** Centrally deploy redaction rules, audit logs, and zero-knowledge session handoff with **PrivacyScrubber TEAMS** ($99/mo flat): [privacyscrubber.com/teams](https://privacyscrubber.com/teams?tier=teams&utm_source=mcp_audit_export&utm_medium=markdown&utm_campaign=teams_upgrade)
|
|
3048
|
+
* **Backend Microservices & RAG Pipelines:** Integrate in-memory sanitization (<1ms) into your Node.js/Python infrastructure with **Developer SDK** ($299/mo): [privacyscrubber.com/sdk](https://privacyscrubber.com/sdk/?tier=sdk&utm_source=mcp_audit_export&utm_medium=markdown&utm_campaign=sdk_pipeline)
|
|
2695
3049
|
|
|
2696
3050
|
*Certified Offline by PrivacyScrubber Engine v${MCP_VERSION}*
|
|
2697
3051
|
*Verify at: https://privacyscrubber.com/features/audit-receipt/* | β *Star on GitHub: https://github.com/moxno/privacyscrubber-mcp*`;
|
|
@@ -2723,6 +3077,33 @@ ${telemetry.frameworksList.map(f => `- **${f}**`).join('\n')}
|
|
|
2723
3077
|
};
|
|
2724
3078
|
}
|
|
2725
3079
|
|
|
3080
|
+
if (name === "generate_procurement_memo") {
|
|
3081
|
+
const {
|
|
3082
|
+
target_tier = "teams",
|
|
3083
|
+
app_name = "Internal AI IDE Toolchain & Workflows",
|
|
3084
|
+
developer = "Engineering / AI Platform Team",
|
|
3085
|
+
team_size = 10,
|
|
3086
|
+
estimated_volume = "50M - 500M characters/month",
|
|
3087
|
+
format = "markdown"
|
|
3088
|
+
} = args || {};
|
|
3089
|
+
|
|
3090
|
+
const memo = generateProcurementMemo({
|
|
3091
|
+
targetTier: target_tier,
|
|
3092
|
+
appName: app_name,
|
|
3093
|
+
developer,
|
|
3094
|
+
teamSize: team_size,
|
|
3095
|
+
estimatedVolume: estimated_volume,
|
|
3096
|
+
format
|
|
3097
|
+
});
|
|
3098
|
+
|
|
3099
|
+
return {
|
|
3100
|
+
content: [{
|
|
3101
|
+
type: "text",
|
|
3102
|
+
text: memo
|
|
3103
|
+
}]
|
|
3104
|
+
};
|
|
3105
|
+
}
|
|
3106
|
+
|
|
2726
3107
|
return {
|
|
2727
3108
|
isError: true,
|
|
2728
3109
|
content: [{ type: "text", text: `Unknown tool: ${name}` }]
|
|
@@ -2837,8 +3218,8 @@ function performSanitization(text, profile, ignoreList = null, customSessionMap
|
|
|
2837
3218
|
|
|
2838
3219
|
function truncateIfFree(text, isPro, charLimit = 15000) {
|
|
2839
3220
|
if (!isPro && text.length > charLimit) {
|
|
2840
|
-
mcpLog(`${colors.yellowBold}[PrivacyScrubber] Input truncated to ${charLimit.toLocaleString()} characters (Free Tier Limit).${colors.reset}\n${colors.cyan}[Upgrade] Set PRIVACYSCRUBBER_KEY to your PRO/TEAMS/SDK license key for unlimited throughput: https://privacyscrubber.com/pricing${colors.reset}\n`);
|
|
2841
|
-
const upsellNotice = `\n\n[PrivacyScrubber Free Tier: Payload truncated to ${charLimit.toLocaleString()} chars. Upgrade to PRO ($15/mo or $110 Lifetime) or Developer SDK ($299/mo) for unlimited payload processing: https://privacyscrubber.com/pricing]`;
|
|
3221
|
+
mcpLog(`${colors.yellowBold}[PrivacyScrubber] Input truncated to ${charLimit.toLocaleString()} characters (Free Tier Limit).${colors.reset}\n${colors.cyan}[Upgrade] Set PRIVACYSCRUBBER_KEY to your PRO/TEAMS/SDK license key for unlimited throughput: https://privacyscrubber.com/pricing?tier=teams&utm_source=mcp&utm_medium=truncation&utm_campaign=teams_upgrade${colors.reset}\n`);
|
|
3222
|
+
const upsellNotice = `\n\n[PrivacyScrubber Free Tier: Payload truncated to ${charLimit.toLocaleString()} chars. Upgrade to PRO ($15/mo or $110 Lifetime) or Developer SDK ($299/mo) for unlimited payload processing: https://privacyscrubber.com/pricing?tier=teams&utm_source=mcp&utm_medium=truncation&utm_campaign=teams_upgrade]`;
|
|
2842
3223
|
return { processedText: text.substring(0, charLimit), wasTruncated: true, upsellNotice, charLimit };
|
|
2843
3224
|
}
|
|
2844
3225
|
return { processedText: text, wasTruncated: false, upsellNotice: "", charLimit };
|
|
@@ -2858,7 +3239,7 @@ server.connect(transport).then(() => {
|
|
|
2858
3239
|
mcpLog(`${colors.cyan}[Architecture] 100% Local In-Memory RAM | 0 Bytes Network Egress${colors.reset}\n`);
|
|
2859
3240
|
mcpLog(`${licenseNotice}\n`);
|
|
2860
3241
|
mcpLog(`${colors.dim}[Developer SDK] In-code headless redaction: npm install @privacyscrubber/sdk${colors.reset}\n`);
|
|
2861
|
-
mcpLog(`${colors.dim}[TEAMS & Enterprise] Multi-seat governance & Air-gap: https://privacyscrubber.com/pricing${colors.reset}\n`);
|
|
3242
|
+
mcpLog(`${colors.dim}[TEAMS & Enterprise] Multi-seat governance & Air-gap: https://privacyscrubber.com/pricing?tier=teams&utm_source=mcp_banner&utm_medium=terminal&utm_campaign=teams_upgrade${colors.reset}\n`);
|
|
2862
3243
|
mcpLog(`${colors.yellow}[GitHub] Public Server Repository: https://github.com/moxno/privacyscrubber-mcp${colors.reset}\n`);
|
|
2863
3244
|
mcpLog(`${colors.cyanBold}======================================================================${colors.reset}\n\n`);
|
|
2864
3245
|
}).catch((error) => {
|