Helm-Protocol/openttt-mcp

๐Ÿ’ฐ Finance & Fintech
0 Views
0 Installs

๐Ÿ“‡ โ˜๏ธ - Proof-of-Time temporal attestation for AI agents. 4 HTTPS sources, 54K+ proofs. Claude Desktop compatible.

Quick Install

One-Click IDE Configuration
claude_desktop_config.json
{
  "mcpServers": {
    "helm-protocol-openttt-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "helm-protocol-openttt-mcp"
      ]
    }
  }
}
Or

Using an AI coding agent (Claude Code, Cursor, etc.)? Copy a ready-made prompt that tells it to fetch the setup instructions and install this server for you.

Documentation Overview

@helm-protocol/ttt-mcp

Reference implementation of draft-helmprotocol-tttps (IETF Experimental)

MCP Server for OpenTTT โ€” Proof of Time tools for AI agents


EU AI Act Art. 50 โ€” AI-Generated Content Transparency

TTTPS provides cryptographic time-provenance for AI-generated content at the moment of creation. A pot_generate call anchors a tamper-evident timestamp to a cryptographic hash of the content record โ€” independently of any embedded metadata.

C2PA complementarity: C2PA metadata is stripped during recapture, transcoding, and format conversion. TTTPS survives as an external anchor independently verifiable without metadata chain continuity โ€” allowing forensic reconstruction of content provenance even when embedded markers are absent.

GDPR-compatible by design: PoT records contain no content and no personal identifiers. Each record binds a cryptographic hash (SHA-256 + HMAC-SHA256) to a multi-source time attestation. No plaintext content transits or is stored on Helm servers.

IETF specification: draft-helmprotocol-tttps (ISE track). Contact: peter@kenosian.com.


The Problem: Workflow Amnesia

Every Claude Code long-horizon workflow hits the same wall: context compression erases action history.

Agent B has no memory of what Agent A decided. Agent A resumes after compression with no record of its own prior steps. Duplicate work. Lost decisions. State corruption.

ttt-mcp is the external causal chain that survives context compression.

Every workflow step is anchored to a cryptographic timestamp on an external server โ€” physically separate from Claude's context window. When compression happens, agents call pot_query(eventId) for O(1) exact step recall and resume with full causal context.

Claude workflow โ†’ [context compressed] โ†’ agents call pot_query(eventId)
                                         โ†’ external server returns full timeline
                                         โ†’ workflow resumes, zero lost state

Mathematical Guarantees

LayerMechanismGuarantee
IdentitySHA-3 eventId (256-bit)Collision probability 2โปยฒโตโถ โ€” practically zero
LookupO(1) exact retrievalNo context consumed by history reconstruction
OrderingTTTPS causal timestampsTotal order on events โ€” tamper-proof sequence proof
Causal chainprevEventId DAGO(depth) traversal โ€” depth ~100 for 1B-token workflows
Non-repudiationEd25519 signatureCryptographic proof of who acted when
ResilienceErasure-coded cryptographic shardsโ‰ฅ97% recovery at BER=0.05, 99.88% at BER=0.02 (theoretical)
PersistenceRedis AOF + 90-day TTLServer survives context compression and restarts

Quick Start

Claude Code

claude mcp add ttt -- npx -y @helm-protocol/ttt-mcp@0.3.0

With an API key (raises the free limit to your plan's monthly quota):

claude mcp add ttt -e TTT_API_KEY=your-key -- npx -y @helm-protocol/ttt-mcp@0.3.0

Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "ttt": {
      "command": "npx",
      "args": ["-y", "@helm-protocol/ttt-mcp@0.3.0"],
      "env": { "TTT_API_KEY": "your-key" }
    }
  }
}

Cursor

Add to Cursor

One-click install, or add the same mcpServers block above to .cursor/mcp.json.

Free tier: 100 calls/day per IP โ€” no signup needed.


5-Minute Test

Once connected, run this sequence in Claude:

Step 1 โ€” Stamp a workflow step:

Just tell Claude naturally:

"Stamp this step as my-first-step" "Record what I just did as refactor-auth-step1"

Claude calls pot_generate automatically. Or call it directly:

pot_generate(eventId: "my-first-step")

Step 2 โ€” Simulate context compression: start a new Claude session

Step 3 โ€” Recover in the new session:

Tell Claude:

"What did I do in my-first-step?" "Recover my last workflow state"

Or call directly:

pot_query(eventId: "my-first-step")

โ†’ Returns exact record. Amnesia gone.

Step 4 โ€” Build a causal chain:

pot_generate(eventId: "step-2", prevEventId: "my-first-step")
pot_graph(eventId: "step-2", depth: 5)

โ†’ Full backward chain. Cryptographically ordered.


7 Tools

ToolPurpose
pot_generateStamp a workflow step with a cryptographic timestamp
pot_verifyVerify a PoT signature
pot_queryO(1) exact lookup by eventId โ€” core amnesia recovery
pot_graphTraverse causal DAG (backward + forward chain)
pot_checkpointRoll up events into a compressed summary โ€” use every ~100 events or before long tasks
pot_statsServer statistics and mode status
pot_healthHealth check

Tool Parameters

pot_generate

Stamp a workflow step with a cryptographic timestamp. For Claude Code: use eventId + prevEventId. For DeFi: use txHash + chainId + poolAddress. One of eventId or txHash is required.

ParameterTypeRequiredDescription
eventIdstringEither/orWorkflow step identifier. E.g. "refactor_auth_step1"
prevEventIdstringNoPrevious step's eventId โ€” links steps into a causal chain
txHashstringEither/orTransaction hash (DeFi, hex with 0x prefix)
chainIdnumberNoEVM chain ID (DeFi)
poolAddressstringNoDEX pool contract address (DeFi)

pot_query

Query Proof of Time records. Use eventId for O(1) exact lookup after context compression.

ParameterTypeRequiredDescription
eventIdstringNoExact step lookup โ€” collision probability 2โปยฒโตโถ
startTimenumberNoStart time (unix ms). Default: 24h ago
endTimenumberNoEnd time (unix ms). Default: now
limitnumberNoMax entries to return. Default: 100, max: 1000

pot_graph

Traverse the causal chain from any step. Returns backward chain (ancestors) and forward chain (descendants).

ParameterTypeRequiredDescription
eventIdstringYesStep to traverse from
depthnumberNoMax backward depth. Default: 10, max: 100

Returns:

  • backwardChain โ€” ancestors in chronological order (depth-compressed for large chains)
  • forwardChain โ€” steps that follow the given eventId
  • chainBroken โ€” true if a gap is detected (ancestor was evicted from ring buffer, or the chain root references an unknown entry)
  • brokenAt โ€” "server_restart" if the gap was caused by a server restart clearing in-memory state; otherwise the eventId at which the break occurred; null if chain is intact
  • reachableDepth โ€” number of ancestors successfully traversed before the gap (or chain root)

Causal chain gap causes:

  • server_restart: the server restarted and the in-memory DAG was cleared. If Redis is available and REDIS_URL is set, the DAG is rebuilt from Redis on startup โ€” reducing restart gaps.
  • Ring-buffer eviction: the ring buffer holds the most recent 10,000 events in memory. Ancestors beyond that window show as chainBroken: true with brokenAt set to the oldest reachable eventId.

Recovering from a gap: call pot_checkpoint before long tasks to compress and preserve the chain within the token budget, or use Redis persistence to survive restarts.

pot_verify

ParameterTypeRequiredDescription
potHashstringYesPoT hash to verify (hex with 0x prefix)
grgShardsstring[]YesArray of hex-encoded cryptographic integrity shards
chainIdnumberYesEVM chain ID
poolAddressstringYesUniswap V4 pool address

pot_stats

ParameterTypeRequiredDescription
period"day" | "week" | "month"YesTime period for statistics

pot_health

No parameters.

pot_checkpoint

Creates a compressed rollup checkpoint of workflow history.

Use when: Approaching context limit, before long tasks, or every ~100 events.

ParameterTypeRequiredDescription
fromEventIdstringNoStart of range โ€” first eventId in the causal chain to include
toEventIdstringNoEnd of range โ€” last eventId in the causal chain to include
startTimenumberNoUnix ms. Default: 1 hour ago
endTimenumberNoUnix ms. Default: now
maxTokensnumberNoApproximate max tokens for rollup output. Default: 2000

Returns:

  • checkpointId โ€” unique checkpoint identifier
  • rollup โ€” compressed event history (depth-adaptive: full/compact/minimal/rollup)
  • summary โ€” human-readable one-line summary of the checkpoint
  • chainIntact โ€” whether the causal chain is unbroken
  • nextCheckpointHint โ€” recommended events before next checkpoint

Depth-adaptive compression:

DepthFormat~Tokens
1โ€“5Full entry~200/event
6โ€“20Compact (id+hash+ts)~80/event
21โ€“50Minimal (id+ts)~30/event
51+Rollup string~10/event

Use Cases

1. Claude Code Workflow โ€” Amnesia Prevention

Problem: A 20-agent Dynamic Workflow refactors a 500K-line codebase over hours. After each context compression, agents have no memory of what they already processed. Duplicate work. State corruption.

Solution: Each agent stamps its steps with pot_generate(eventId, prevEventId). After compression, it calls pot_query(eventId) to recover its exact action history โ€” what ran, when, in what order โ€” from the external server. The server is outside Claude's context window; compression never touches it.

// Agent starts a workflow step
const pot = await client.callTool({
  name: "pot_generate",
  arguments: {
    eventId: "refactor_auth_module_step3",
    prevEventId: "refactor_auth_module_step2"
  }
});
// pot.potHash โ€” cryptographic proof this step happened at this time

// After context compression, agent recovers its history:
const history = await client.callTool({
  name: "pot_query",
  arguments: { eventId: "refactor_auth_module_step3" }
});
// history.local[0] โ€” exact record: timestamp, prevEventId, potHash
// history.found: true โ€” O(1) lookup, collision probability 2โปยฒโตโถ

// Traverse full causal chain:
const chain = await client.callTool({
  name: "pot_graph",
  arguments: { eventId: "refactor_auth_module_step3", depth: 20 }
});
// chain.backwardChain โ€” all ancestor steps in chronological order
// chain.forwardChain โ€” steps that follow this one
// chain.chainBroken โ€” true if a gap was detected in the ancestor chain
// chain.brokenAt    โ€” "server_restart" if the server restarted and cleared
//                     the in-memory DAG; otherwise the eventId of the oldest
//                     reachable ancestor before the gap; null if chain intact
// chain.reachableDepth โ€” how many ancestors were recovered before the gap

// Handle a server-restart gap:
if (chain.chainBroken && chain.brokenAt === "server_restart") {
  // Server cleared in-memory state; ancestors before the gap are gone unless
  // Redis was configured (REDIS_URL) โ€” in that case the DAG was rebuilt on
  // restart and chainBroken will be false.
  // Recover by querying the most recent checkpoint or restarting from a known step.
}

Before a long task or every ~100 events โ€” create a checkpoint:

// Compress workflow history before context fills up โ€” by causal range:
const checkpoint = await client.callTool({
  name: "pot_checkpoint",
  arguments: {
    fromEventId: "refactor_auth_module_step1",
    toEventId: "refactor_auth_module_step3"
  }
});
// checkpoint.checkpointId โ€” store this; resume from it after compression
// checkpoint.rollup โ€” depth-adaptive compressed history (10โ€“200 tokens/event)
// checkpoint.chainIntact: true โ€” causal chain verified unbroken
// checkpoint.nextCheckpointHint: 87 โ€” suggested events before next checkpoint

// Or compress by time window with a token budget:
const checkpoint = await client.callTool({
  name: "pot_checkpoint",
  arguments: {
    startTime: Date.now() - 3_600_000,  // last 1 hour
    maxTokens: 1500
  }
});

// After context compression, restore from checkpoint instead of re-querying all events:
const history = await client.callTool({
  name: "pot_query",
  arguments: { eventId: checkpoint.checkpointId }
});
// Full causal context restored in a single call

Outcome: Zero duplicate work. Full workflow timeline recoverable even after complete context resets.


2. MEV Bot โ€” Transaction Ordering Proof

Problem: You got front-run. You can't prove it โ€” mempool timestamps are per-node, unsigned, non-authoritative.

Solution: Call pot_generate before every submission. The PoT receipt is cryptographically signed using three independent time sources (NIST, Google, Cloudflare). The on-chain hash can be anchored via a separate Base Sepolia TTT ERC-1155 contract. If front-running occurs, you have a timestamped record predating the attacker's block inclusion.

const pot = await client.callTool({
  name: "pot_generate",
  arguments: { txHash: pendingTxHash, chainId: 8453, poolAddress: "0x..." }
});
// pot.potHash โ€” your evidence, timestamped by NIST+Google+Cloudflare

Note: The DeFi path (txHash + chainId + poolAddress) requires a server-side build with the integrity-shard pipeline enabled. It is not available in the public openttt npm package; calls without it will throw. The Claude Code path (eventId) works out of the box.


3. DEX Protocol โ€” Sandwich Deterrence

Solution: Integrate TTTHookSimple (Uniswap V4 hook, Base Sepolia: 0x8C633b05b833a476925F7d9818da6E215760F2c7). Honest builders get turbo mode. Tampered sequences get full mode (penalty delay). Economics, not governance.

Note: Shard-based verification (pot_verify with grgShards) requires a server-side build with the integrity-shard pipeline enabled โ€” not available in the public openttt npm package.


4. Hedge Fund / Prop Desk โ€” MiFIR Art.22c Compliance

Problem: MiFIR Article 22c / RTS 25 requires microsecond-precision UTC-synchronized timestamps. Hardware PTP appliances cost $50Kโ€“$500K.

Solution: pot_generate produces an Ed25519-signed timestamp with an uncertainty bound and multi-source attestation. Structurally compatible with the RTS 25 audit record format. One API call per trade.

const audit = await client.callTool({
  name: "pot_generate",
  arguments: { txHash: tradeHash, chainId: 8453 }
});
// audit.timestamp: high-resolution timestamp
// audit.uncertainty: ยฑ bound (RTS 25 uncertainty field)
// audit.confidence: fraction of sources that agreed

Precision note: The default network time sources (Roughtime / NTP) provide a few-millisecond uncertainty bound. The MiFIR Art. 22c / RTS 25 ยฑ1ms (and tighter) requirement is met only with an added GEO time source (KTSat); this is a roadmap configuration, not the default deployment.

Outcome: Structurally compatible audit trail. IETF specification: draft-helmprotocol-tttps.


5. Multi-Agent Coordination โ€” Causal Order Proof

Problem: When multiple AI agents interact in a pipeline, the causal order matters for debugging and audit. Agent logs are unverifiable.

Solution: Each agent stamps its action with pot_generate. The potHash chain is independently verifiable. pot_graph reconstructs who did what and in what order.


How It Differs โ€” A Different Job, Not "Better"

ToolIntegrationWhat it recallsIntegrityHot-path cost
Letta (MemGPT)owns the agent loopself-editing semantic memorynoneembedding + vector search per memory op
LangGraph / LangMemLangGraph onlygraph state / semanticnonecheckpoint I/O (+ embeddings)
RAG / vector DBbolt-onfuzzy similaritynoneembed + vector search per item
ttt-mcp2-min MCP retrofitexact causal step (by eventId)Ed25519 + TTTPS timestampsign + hash + write โ€” 0 embedding calls

The cost difference is structural, not incidental.

Letta and Mem0 treat agent memory as a semantic search problem โ€” every recall forces an LLM embedding call and a vector search. ttt-mcp bypasses the LLM/embedding layer entirely: state recovery is an O(1) cryptographic hash lookup. Marginal cost is commodity CPU + storage, not API tokens.

Scope: agents stamp the steps worth checkpointing โ€” not every token, not every query. Volume tracks decisions, not total chat traffic.

If you need fuzzy semantic search over past conversations, use Letta or a vector DB. If you need a zero-embedding, deterministic state recovery layer for long-horizon workflows that survives context compaction, use ttt-mcp.


Pricing

TierPriceCalls/month
Free$0100/day per IP โ€” no signup
Dev$29/mo100K
Pro$99/mo1M
Team$299/mo10M + $0.01/1K overage
Enterprise$999+/mo100M calls/mo ยท $0.001/1K overage ยท SLA 99.9%
Platform LicenseNegotiated ($2M+/yr)Volume cap negotiated ยท native integration

Subscribe:

Dev $29/mo ยท Pro $99/mo ยท Team $299/mo โ€” to subscribe, email peter@kenosian.com.

Enterprise & Platform License: peter@kenosian.com

Contact: peter@kenosian.com

Quota mechanics โ€” stdio vs HTTP:

  • HTTP mode (Glama / Smithery container, PORT set): the per-IP free tier limit (100 calls/day) is enforced locally in the server process.
  • stdio mode (Claude Code npx, Claude Desktop): there is no per-IP counter. Tool calls are delegated to api.kenosian.com via X-TTT-API-Key; quota is enforced server-side against your plan's monthly allowance. Without TTT_API_KEY the local fallback runs with no daily cap, but plan features (server-side DAG persistence, multi-session causal chains) are unavailable.

Requirements

  • Node.js >= 18
  • Network access for time synthesis (HTTPS to time.nist.gov, time.google.com, time.cloudflare.com)

Time source tiers (automatic fallback):

TierSourceStratumNotes
1 (preferred)PTP / hardware clock0โ€“1Requires local PTP daemon
2Roughtime / NTP (NIST, Google, Cloudflare)2โ€“4Default for most deployments
3 (offline fallback)Local system clock16RFC 5905 unsynchronized stratum โ€” used when all network sources are unreachable

The server falls through to stratum 16 automatically; no manual configuration needed. The stratum field in every pot_generate response indicates which tier was used.

Redis persistence (optional):

Redis is not required. The in-memory DAG is authoritative at runtime. If REDIS_URL is set, events are written to Redis with a 90-day TTL and the DAG is rebuilt from Redis on server restart โ€” reducing server_restart chain gaps. Without Redis, the in-memory DAG is cleared on restart.


Production Tips

Cold Start warm-up โ€” On first startup, BatchSigner requires one request to initialize. Call pot_health or send a single dummy pot_generate before your load balancer health check goes live. Without this, the first request may see p99 ~500ms; subsequent requests stabilize to <10ms.

# Kubernetes / Docker: add to your startup script
curl -s http://your-server/pot/health > /dev/null

Learn More

License

BSL-1.1 โ€” free for non-commercial use.

Commercial use (production bots, hedge funds, prop desks) requires a license.

Change Date: 2029-05-28 โ†’ Apache 2.0

Related MCP Servers

@agentfund/mcp

๐Ÿ“‡ โ˜๏ธ - Fundraising infrastructure for AI agents on Solana โ€” campaigns, x402 donations, and on-chain reputation. MCP tools for registering agents, creating campaigns, and donating via the x402 pay-to-call flow, backed by Anchor programs (agentregistry, escrow, reputation). npx -y @agentfund/mcp

๐Ÿ’ฐ Finance & Fintech1 views
@asterpay/mcp-server

๐Ÿ“‡ โ˜๏ธ - EUR settlement for AI agents via x402 protocol. Market data, AI tools, crypto analytics โ€” pay-per-call in USDC on Base. SEPA Instant EUR off-ramp.

๐Ÿ’ฐ Finance & Fintech1 views
@czagents/cnb

๐Ÿ“‡ โ˜๏ธ ๐Ÿ  ๐ŸŽ ๐ŸชŸ ๐Ÿง - Czech National Bank (ฤŒNB) daily FX rates: fetch official CZK exchange rates, convert between currencies, fetch historical rates. Cached 10 min to ease upstream load. npm @czagents/cnb or HTTP at cnb.cz-agents.dev/mcp.

๐Ÿ’ฐ Finance & Fintech1 views
@arbitova/mcp-server

๐Ÿ“‡ โ˜๏ธ - Non-custodial on-chain escrow + AI dispute arbitration for agent-to-agent USDC payments on Base. Seven tools covering the full EscrowV1 contract surface: create escrow, mark delivered with on-chain content hash, confirm or dispute, arbiter resolves with signed verdict, cancel/escalate on timeout. npx @arbitova/mcp-server

๐Ÿ’ฐ Finance & Fintech0 views

Engagement

Views
0
Installs
0
Upvotes
0

Views and upvotes are unique per visitor network (hashed IP). Installs count copy actions.

Status

Health: Not checked yet

We have not completed a health check for this listing yet.

No check timestamp yet.

Unclaimed listing (imported or pending owner verification). Claim it โ†’
โ˜… Spotlight Slot

Feature Your MCP Server

Get maximum visibility for your server across our directory, search results, and detail pages.

Spotlight Your Server

Own this project?

This directory is pre-filled from public sources. Claim via GitHub README, site badge, or DNS TXT to get the verified badge and attach your website.

Claim this listing

Promote this listing

Optional paid placement. Free listings stay free forever.

Share & Embed

Add our SVG badge (dark/light directory styles) or embeddable widget to your site.