Skip to content

io.github.shemshallah/qtcl-mcp-server

by shemshallah · remote · no sign-in to list tools · v8.2.0 · published by GitHub user shemshallah

Agent-native post-quantum blockchain. 11 tools: send, balance, quantum oracle metrics. Flat fee.

Final · 1Changes · 10

22 tools: 1 do something that can't be undone, 10 change things and 11 only read.

Scanned Oct 21, 2026

No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport sse qtcl https://qtcl-blockchain.koyeb.app/mcp/sse

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

22 tools

Can't be undone 1Claude Code: ask
  • qtcl_send_transactionSubmit a signed UTXO transaction to the QTCL network.No findings

    Why it is in this group

    • The name "qtcl_send_transaction" says "send": a word for sending, and what is sent cannot be taken back.
    Description, as the server wrote it
    Submit a signed UTXO transaction to the QTCL network. Flat fee: 1 qsat. Finality: ~18 seconds. WORKFLOW: (1) pick nonce = int(time.time()*1000) [ms epoch]. (2) build payload = JSON.dumps({sender,recipient,amount,nonce}, sort_keys=True). (3) hash = SHA3-256(payload) as 64-char hex. (4) call qtcl_sign_message(message_hex=hash, private_key=key). (5) pass the 'signature_for_tx' field from step 4 as the 'signature' arg here, with the SAME nonce used in steps 1-4. CRITICAL: nonce must be a millisecond timestamp (>1700000000000) to avoid nonce_replay rejection. Never use sequential integers.
Changes things 10Claude Code: ask
  • qtcl_create_hybrid_walletCreate a new QTCL wallet with HYBRID post-quantum keys: Falcon-512 (NIST FIPS 206, 128-bit PQ security) + SL(3,p) (~70-bit classical).No findings

    Why it is in this group

    • The name "qtcl_create_hybrid_wallet" says "create": a word for a change.
    Description, as the server wrote it
    Create a new QTCL wallet with HYBRID post-quantum keys: Falcon-512 (NIST FIPS 206, 128-bit PQ security) + SL(3,p) (~70-bit classical). Returns full keypair dict with both Falcon and SL(3,p) components. Server does NOT retain secret keys. This is the v3 recommended wallet type — quantum-safe by default.
  • qtcl_create_walletCreate a new QTCL post-quantum wallet backed by a real HypΓ keypair (Schnorr-Γ over SL(3,p), 512-step random walk, SHA3-256² address).No findings

    Why it is in this group

    • The name "qtcl_create_wallet" says "create": a word for a change.
    Description, as the server wrote it
    Create a new QTCL post-quantum wallet backed by a real HypΓ keypair (Schnorr-Γ over SL(3,p), 512-step random walk, SHA3-256² address). Returns private_key, public_key, address, and created_at. Store private_key securely — the server never retains it.
  • qtcl_quantum_decryptDecrypt quantum-bound or quantum-assisted ciphertext.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Decrypt quantum-bound or quantum-assisted ciphertext. Auto-detects mode from the ciphertext dict: quantum_bound → runs QLDPC pipeline on masked key, XOR-unmasks, decrypts attestation → tries classical first, falls back to quantum-assisted recovery classical → pure classical decrypt Returns: Plaintext (hex), plaintext_length, quantum_assisted flag, quantum_mode.
  • qtcl_quantum_encryptQuantum-bound encryption via IBM QLDPC hardware (ibm_marrakesh/ibm_kingston).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Quantum-bound encryption via IBM QLDPC hardware (ibm_marrakesh/ibm_kingston). Two modes: quantum_bound (async=false, default): XOR-masks the encapsulated key with a hardware-derived quantum key. Runs synchronously with 8192 shots for deterministic results. Recipient MUST use qtcl_quantum_decrypt to recover the key. attestation (async=true): Leaves encapsulated key unchanged, runs hardware in background. Attaches quantum_commitment as metadata. Classical decrypt still works. Returns: Ciphertext dict with quantum_commitment, quantum_status, quantum_mode, quantum_hardened, and all standard encryption fields.
  • qtcl_quantum_pipelineRun the full QLDPC pipeline directly on IBM quantum hardware.No findings

    Why it is in this group

    • The description's first verb is "run": a word for a change.
    Description, as the server wrote it
    Run the full QLDPC pipeline directly on IBM quantum hardware. Encodes ciphertext bytes into a hyperbolic QLDPC code, runs on real IBM hardware (8192 shots), decodes syndromes via BP+OSD, and returns the recovered key fragment. Returns: Pipeline result with recovered_key_hex, residual, status, job_id, backend.
  • qtcl_repair_utxosNuclear UTXO repair: bypasses settlement machinery and directly inserts missing UTXOs from the transactions table.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Nuclear UTXO repair: bypasses settlement machinery and directly inserts missing UTXOs from the transactions table. Use when qtcl_retro_settle reports success but UTXOs are still missing. Commits per-UTXO for maximum isolation. Returns repaired_blocks, repaired_utxos, recomputed_wallets counts.
  • qtcl_retro_settleRetroactively settle all blocks whose UTXOs are missing from address_utxos.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Retroactively settle all blocks whose UTXOs are missing from address_utxos. Safe to call repeatedly — idempotent. Returns counts of settled/skipped/error blocks. Use this when miner balance is lower than expected after mining blocks.
  • qtcl_sign_messageSign a 32-byte message hash with a HypΓ private key using Schnorr-Γ.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Sign a 32-byte message hash with a HypΓ private key using Schnorr-Γ. To sign a transaction, compute: SHA3-256(JSON.dumps({"sender": from_addr, "recipient": to_addr, "amount": amount_float, "nonce": nonce_int}, sort_keys=True)) → pass the 64-char hex as message_hex. The nonce MUST match the nonce you will use in qtcl_send_transaction. Returns the full signature dict (with canonical R/Z matrix fields) — pass the entire JSON output as the signature field to qtcl_send_transaction. CRITICAL: use the 'signature_for_tx' field from the response as the 'signature' argument to qtcl_send_transaction — do not extract sub-fields.
  • qtcl_sign_message_hybridSign a 32-byte message hash with HYBRID PQC (Falcon-512 + SL(3,p)).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Sign a 32-byte message hash with HYBRID PQC (Falcon-512 + SL(3,p)). Both Falcon and SL(3,p) signatures are computed independently — verification requires BOTH to be valid. message_hex must be 64 hex chars (SHA3-256 of signing payload). private_key_json must be the full JSON output from qtcl_create_hybrid_wallet. Returns hybrid signature dict — pass verbatim as 'signature' to qtcl_send_transaction.
  • qtcl_submit_blockSubmit a fully PoW-solved and HypΓ-signed block to the chain.No findings

    Why it is in this group

    • The name "qtcl_submit_block" says "submit": a word for a change.
    Description, as the server wrote it
    Submit a fully PoW-solved and HypΓ-signed block to the chain. This is the unified miner submission path. The miner client performs PoW locally, signs the block header, then calls this with the complete payload. Required: height, block_hash, parent_hash, merkle_root, timestamp, nonce, miner_address, difficulty_bits, w_entropy_hash, hyp_signature, miner_public_key_hex. Optional: transactions (JSON array), w_state_fidelity, pq0, pq_curr, pq_last, mermin_value, mermin_violated, quantum_field_16x16x16. Returns: {status, height, block_hash, next_height, miner_reward_qtcl}.
Only reads 11Claude Code: allow
  • qtcl_get_balanceCheck QTCL balance for any address.No findings

    Why it is in this group

    • The name "qtcl_get_balance" says "get": a word for reading.
    Description, as the server wrote it
    Check QTCL balance for any address. Returns balance in base units (qsat), UTXO count, and UTXO list. 1 QTCL = 100 qsat.
  • qtcl_get_blockRetrieve a block by height (integer) or hash (hex string).No findings

    Why it is in this group

    • The name "qtcl_get_block" says "get": a word for reading.
    Description, as the server wrote it
    Retrieve a block by height (integer) or hash (hex string). Omit both for the latest block.
  • qtcl_get_chain_infoCurrent blockchain state: height, latest block hash, mempool depth, oracle status, and system health vector.No findings

    Why it is in this group

    • The name "qtcl_get_chain_info" says "get": a word for reading.
    Description, as the server wrote it
    Current blockchain state: height, latest block hash, mempool depth, oracle status, and system health vector.
  • qtcl_get_oracle_registryList registered quantum oracle nodes participating in 5-oracle Byzantine consensus (3-of-5 majority).No findings

    Why it is in this group

    • The name "qtcl_get_oracle_registry" says "get": a word for reading.
    Description, as the server wrote it
    List registered quantum oracle nodes participating in 5-oracle Byzantine consensus (3-of-5 majority).
  • qtcl_get_peersList active P2P peers in the QTCL Kademlia DHT network.No findings

    Why it is in this group

    • The name "qtcl_get_peers" says "get": a word for reading.
    Description, as the server wrote it
    List active P2P peers in the QTCL Kademlia DHT network.
  • qtcl_get_pqc_statusReturn PQC module status — shows whether Falcon-512 is available, key/signature sizes, security level, and hybrid signature overhead.No findings

    Why it is in this group

    • The name "qtcl_get_pqc_status" says "get": a word for reading.
    Description, as the server wrote it
    Return PQC module status — shows whether Falcon-512 is available, key/signature sizes, security level, and hybrid signature overhead. Use to check if the server supports full hybrid PQ signatures.
  • qtcl_get_priceQTCL network quantum coherence metrics and valuation signals.No findings

    Why it is in this group

    • The name "qtcl_get_price" says "get": a word for reading.
    Description, as the server wrote it
    QTCL network quantum coherence metrics and valuation signals. Note: QTCL has no public USD exchange. Returns W-state fidelity, entanglement witness, and oracle coherence as network health proxy.
  • qtcl_get_quantum_metricsLive quantum coherence metrics: W-state fidelity (≥0.75 healthy), entanglement witness (NPT criterion), oracle consensus round, Mermin inequality test, and kappa=0.11 non-Markovian…No findings

    Why it is in this group

    • The name "qtcl_get_quantum_metrics" says "get": a word for reading.
    Description, as the server wrote it
    Live quantum coherence metrics: W-state fidelity (≥0.75 healthy), entanglement witness (NPT criterion), oracle consensus round, Mermin inequality test, and kappa=0.11 non-Markovian coherence score.
  • qtcl_get_recent_transactionsList recent transactions, optionally filtered by address.No findings

    Why it is in this group

    • The name "qtcl_get_recent_transactions" says "get": a word for reading.
    Description, as the server wrote it
    List recent transactions, optionally filtered by address. Returns newest first. Max 50 per call.
  • qtcl_get_transactionLook up a QTCL transaction by its SHA3-256 hash.No findings

    Why it is in this group

    • The name "qtcl_get_transaction" says "get": a word for reading.
    Description, as the server wrote it
    Look up a QTCL transaction by its SHA3-256 hash. Returns full tx details, status, and block height.
  • qtcl_get_utxosList unspent transaction outputs (UTXOs) for an address.No findings

    Why it is in this group

    • The name "qtcl_get_utxos" says "get": a word for reading.
    Description, as the server wrote it
    List unspent transaction outputs (UTXOs) for an address. Returns tx_hash, output_index, amount_base per coin.

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 8.2.0. Values in angle brackets are yours to fill in.

claude mcp add --transport sse qtcl https://qtcl-blockchain.koyeb.app/mcp/sse

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__qtcl__qtcl_get_balance",
      "mcp__qtcl__qtcl_get_utxos",
      "mcp__qtcl__qtcl_get_transaction",
      "mcp__qtcl__qtcl_get_chain_info",
      "mcp__qtcl__qtcl_get_block",
      "mcp__qtcl__qtcl_get_recent_transactions",
      "mcp__qtcl__qtcl_get_quantum_metrics",
      "mcp__qtcl__qtcl_get_oracle_registry",
      "mcp__qtcl__qtcl_get_peers",
      "mcp__qtcl__qtcl_get_price",
      "mcp__qtcl__qtcl_get_pqc_status"
    ],
    "ask": [
      "mcp__qtcl__qtcl_create_wallet",
      "mcp__qtcl__qtcl_sign_message",
      "mcp__qtcl__qtcl_send_transaction",
      "mcp__qtcl__qtcl_retro_settle",
      "mcp__qtcl__qtcl_repair_utxos",
      "mcp__qtcl__qtcl_submit_block",
      "mcp__qtcl__qtcl_quantum_encrypt",
      "mcp__qtcl__qtcl_quantum_decrypt",
      "mcp__qtcl__qtcl_quantum_pipeline",
      "mcp__qtcl__qtcl_create_hybrid_wallet",
      "mcp__qtcl__qtcl_sign_message_hybrid"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as qtcl. Review it before you use it.