@privacyscrubber/mcp-server 2.3.6 β†’ 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/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: 'IL 331905 (Tracking: 94221)',
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/)\n`;
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/)\n`;
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=terminal\nπŸ‘‰ Alternatively, sanitize plain text, code, CSV, and DOCX files for free.`
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=terminal` }] };
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=mcp_cli&utm_medium=terminal β•‘'
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=mcp_cli&utm_medium=terminal β•‘',
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?src=mcp_audit_json",
2662
- sdk_pipeline_url: "https://privacyscrubber.com/sdk/?src=mcp_audit_json"
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?src=mcp_audit_export)
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/?src=mcp_audit_export)
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) => {