Slowtime

Slowtime MCP Server

A Model Context Protocol server for secure time-based operations with timing attack protection and timelock encryption.

                                     ┌──────────────┐
ClaudeDesktop                                     └──────┬───────┘
┌──────────────┐                    ┌──────────────┐
Timelock   │◄──────────────────►│   SlowtimeEncryption  │                    │     MCP└──────────────┘                    │    Server                                    └──────┬───────┘
┌──────────────┐                   ┌──────────────┐
Timing    │◄─────────────────►│  IntervalProtection   │                   │   Manager└──────────────┘                   └──────────────┘

Features

Time Fuzzing & Security

Input Time ──┐
            ┌▼─────────────┐
Random Fuzz  │     ┌─────────────┐
             (100-5000ms) ├────►│ Jittered            └─────────────┘     │ Timestamp                               └─────────────┘

Timelock Encryption Flow

Data ───────┐
           ┌▼────────────┐    ┌────────────┐    ┌────────────┐
Encrypt    │    │  Interval  │    │ League ofwith     ├───►│ Duration   ├───►│  EntropyTimelock   │    │ Remaining  │    │  Network           └────────────┘    └────────────┘    └────────────┘

Interval Management

[Start]──►[Active]──┐
               ▲    │
               │    ▼
            [Resume] [Pause]
                    │    ▲
                    ▼    │
                 [Paused]

Installation

Add to your Claude Desktop config at ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "slowtime": {
      "command": "node",
      "args": ["/path/to/slowtime-mcp-server/build/index.js"]
    }
  }
}

Usage

Basic Interval Commands

start_interval "Focus Time" 25  ───► [25min Interval Created]
check_interval <id>  ◄───────────────────┘
pause_interval <id>  ◄───────────────────┘
resume_interval <id> ◄───────────────────┘

Timelock Encryption

1. Start Interval:
   "Focus Time" (25min) ──► [Interval ID: abc123]

2. Encrypt Data:
   "secret" + abc123 ──► [Timelock ID: xyz789]

3. Attempt Decrypt:
   - Before interval ends: "Not yet decryptable"
   - After interval ends: "secret"

Security Features

Timing Attack Prevention

Operation ──┬──► Random Delay (100-5000ms)
            ├──► Jittered Timestamps
            └──► Constant-time Comparisons

Timelock Security & Storage

┌─────────────┐    ┌─────────────┐    ┌─────────────┐    ┌─────────────┐
Encrypt   │    │ Distributed │    │  Timelock   │    │  DuckDBData    ├───►│  Randomness ├───►│  Protected  ├───►│  TimeVault│            │    │  Network    │    │    Data     │    │  Storage└─────────────┘    └─────────────┘    └─────────────┘    └─────────────┘
                                           │                     ▲
                                           │      ┌──────────────┘
                                           ▼      │
                                    ┌─────────────┴─┐
Analytics& Statistics                                    └───────────────┘

TimeVault Analytics

Query History ──┐
               ├──► ┌─────────────┐
Filter Options ┘    │   DuckDB    │    ┌─────────────┐
WASM      ├───►│  AnalyticsVault Stats ───────►│   Engine    │    │   Results                    └─────────────┘    └─────────────┘

Architecture

The server consists of four main components:

  1. TimeFuzz: Provides timing attack protection through:

    • Random duration fuzzing
    • Constant-time comparisons
    • Jittered timestamps
    • Random operation delays
  2. TimeKeeper: Manages intervals with:

    • Creation/pause/resume operations
    • Progress tracking
    • Automatic cleanup
    • Fuzzing integration
  3. TimeLock: Handles encryption with:

    • drand network integration
    • Interval-based decryption
    • Automatic cleanup
    • Secure random number generation
  4. TimeVault: Provides persistent storage and analytics:

    • DuckDB WASM-based storage
    • Historical tracking of encrypted data
    • Analytics and statistics
    • Query capabilities with filtering

TimeVault Commands

Query historical data and statistics about encrypted timevaults:

# List vault history with filtering
list_vault_history --interval_id=abc123 --decrypted_only=true --limit=10

# Get vault statistics
get_vault_stats

Example output:
Total vaults: 150
Decrypted vaults: 75
Average decryption time: 45 seconds

Storage Schema

The TimeVault uses DuckDB WASM for persistent storage with the following schema:

CREATE TABLE timevaults (
  id VARCHAR PRIMARY KEY,
  encrypted_data TEXT NOT NULL,
  round_number BIGINT NOT NULL,
  created_at TIMESTAMP NOT NULL,
  decrypted_at TIMESTAMP,
  interval_id VARCHAR NOT NULL,
  metadata JSON
);

-- Indexes for efficient querying
CREATE INDEX idx_interval_id ON timevaults(interval_id);
CREATE INDEX idx_created_at ON timevaults(created_at);

Contributing

  1. Fork the repository
  2. Create your feature branch
  3. Commit your changes
  4. Push to the branch
  5. Create a Pull Request

License

MIT License - see LICENSE file for details