x=hub

your toolset

    build deployment
    sign in

    qtcl-mcp-server

    mcpother
    io.github.shemshallah/qtcl-mcp-server · v8.2.0
    deploy just this

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

    run it

    on your own machines, one way per deploy method
    generated from the record, not tested yet
    CHANGE_ME: built from the repository's Dockerfile, assuming it serves streamable HTTP at :8000/mcp. Nothing has run this yet; the worker replaces it with a tested recipe.
    # once, as root:
    docker build -t mcp-local/qtcl:latest https://github.com/shemshallah/qtcl-mcp-server.git
    
    #!/usr/bin/env bash
    # qtcl (io.github.shemshallah/qtcl-mcp-server), recipe docker (generated).
    # Generated by Hub for toolset "my-agent"; started by mcp-my-agent-qtcl.service.
    set -euo pipefail
    export HOST=127.0.0.1 PORT=8101
    exec docker run --rm --name mcp-my-agent-qtcl -p 127.0.0.1:${PORT}:8000 --env-file /etc/mcp/my-agent.env mcp-local/qtcl:latest
    
    [Unit]
    Description=MCP server qtcl (toolset my-agent), generated by Hub
    After=network-online.target docker.service
    Wants=network-online.target
    
    [Service]
    Type=simple
    User=mcp
    Group=mcp
    SupplementaryGroups=docker
    EnvironmentFile=/etc/mcp/my-agent.env
    Environment=HOME=/var/lib/mcp/qtcl
    WorkingDirectory=/var/lib/mcp/qtcl
    ExecStart=/opt/mcp/my-agent/bin/qtcl.sh
    Restart=on-failure
    RestartSec=5
    NoNewPrivileges=true
    ProtectSystem=strict
    ProtectHome=true
    PrivateTmp=true
    ReadWritePaths=/var/lib/mcp/qtcl
    
    [Install]
    WantedBy=multi-user.target
    
    generated from the record, not tested yet
    CHANGE_ME: built from the repository's Dockerfile, assuming it serves streamable HTTP at :8000/mcp. Nothing has run this yet; the worker replaces it with a tested recipe.
    docker build -t qtcl https://github.com/shemshallah/qtcl-mcp-server.git
    docker run --rm -p 127.0.0.1:8101:8000 qtcl
    
    generated from the record, not tested yet
    CHANGE_ME: built from the repository's Dockerfile, assuming it serves streamable HTTP at :8000/mcp. Nothing has run this yet; the worker replaces it with a tested recipe.
    # Generated by Hub for toolset "my-agent" (2026-10-18T13:53:08+00:00).
    # Each package server runs behind a stdio->HTTP bridge and listens on localhost only.
    #   cp .env.example .env    # fill the ${VAR}s
    #   docker compose up -d && bash smoke.sh
    # Remote servers are not here: clients reach them directly (see clients/).
    name: mcp-my-agent
    services:
      qtcl:
        build:
          context: https://github.com/shemshallah/qtcl-mcp-server.git
        ports:
        - 127.0.0.1:8101:8000
        restart: unless-stopped
        x-note: 'CHANGE_ME: built from the repository''s Dockerfile, assuming it serves streamable HTTP at
          :8000/mcp. Nothing has run this yet; the worker replaces it with a tested recipe.'
    volumes:
      npm-cache: {}
      uv-cache: {}
    
    generated from the record, not tested yet
    CHANGE_ME: built from the repository's Dockerfile, assuming it serves streamable HTTP at :8000/mcp. Nothing has run this yet; the worker replaces it with a tested recipe.
    # Generated by Hub for toolset "my-agent" (2026-10-18T13:53:08+00:00).
    #   kubectl create namespace mcp
    #   kubectl -n mcp create secret generic mcp-credentials --from-env-file=.env
    #   kubectl apply -f kubernetes.yaml
    # Services are cluster-internal: <name>.mcp.svc.cluster.local:8000/mcp. Put an ingress
    # with auth in front before exposing any of them.
    apiVersion: v1
    kind: Namespace
    metadata:
      name: mcp
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: qtcl
      namespace: mcp
      labels: &id001
        app: qtcl
    spec:
      replicas: 1
      selector:
        matchLabels: *id001
      template:
        metadata:
          labels: *id001
        spec:
          containers:
          - name: qtcl
            image: CHANGE_ME
            ports:
            - containerPort: 8000
              name: http
            env: []
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: qtcl
      namespace: mcp
    spec:
      selector:
        app: qtcl
      ports:
      - port: 8000
        targetPort: http
        name: http
    
    generated from the record, not tested yet
    CHANGE_ME: built from the repository's Dockerfile, assuming it serves streamable HTTP at :8000/mcp. Nothing has run this yet; the worker replaces it with a tested recipe.
    # Generated by Hub for toolset "my-agent" (2026-10-18T13:53:08+00:00).
    # Credentials come from the Secret 'mcp-credentials' (kubectl create secret generic ... --from-env-file=.env).
    # Each server under `servers` is one Deployment + Service; the keys after it configure
    # upstream charts a worker verified.
    servers:
      qtcl:
        enabled: true
        replicas: 1
        port: 8000
        path: /mcp
        container:
          name: qtcl
          image: CHANGE_ME
          ports:
          - containerPort: 8000
            name: http
          env: []
    
    # helm install my-agent helm/my-agent -n mcp
    

    in the cloud

    one click: the provider's deploy form opens filled in, in your own account
    koyeb

    Koyeb builds the repository's Dockerfile from branch main; change the branch in the form if the default one has another name.

    Clients connect to the service's https://…koyeb.app address plus /mcp.

    cloud run

    Cloud Shell clones the repository, builds its Dockerfile and deploys it to Cloud Run.

    Cloud Run sends requests to $PORT (8080); the recipe expects :8000, so the server has to read PORT, or set the container port on the service afterwards.

    connect to it

    copy what your client needs
    {
      "mcpServers": {
        "qtcl": {
          "command": "CHANGE_ME",
          "args": []
        }
      }
    }
    #!/usr/bin/env bash
    # Registers every server with Claude Code (run once; `claude mcp list` to check).
    set -euo pipefail
    set -a; [ -f .env ] && source .env; set +a
    claude mcp add qtcl -- CHANGE_ME
    
    {
      "mcpServers": {
        "qtcl": {
          "command": "CHANGE_ME",
          "args": []
        }
      }
    }
    {
      "servers": {
        "qtcl": {
          "type": "stdio",
          "command": "CHANGE_ME",
          "args": []
        }
      }
    }
    name: my-agent
    target: local
    servers:
    - hub: io.github.shemshallah/qtcl-mcp-server
    
    • no recipe for target 'local': fill the files by hand

    tools · 22

    • 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). 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.

      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.

      pin fcf340ffd0f4a24602c37426fa692ac7260529f803ba4662764bb1504d400317
    • 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). Returns private_key, public_key, address, and created_at. Store private_key securely — the server never retains 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.

      pin 1f62d22ebceb5fde8a846510c837a198179487daa639f7c07e476c96f48da099
    • qtcl_get_balanceCheck QTCL balance for any address. Returns balance in base units (qsat), UTXO count, and UTXO list. 1 QTCL = 100 qsat.

      Check QTCL balance for any address. Returns balance in base units (qsat), UTXO count, and UTXO list. 1 QTCL = 100 qsat.

      pin 7c20999f675d3abd630452d7d4035890bacee79c502eb490cb9cc6e43f453626
    • qtcl_get_blockRetrieve a block by height (integer) or hash (hex string). Omit both for the latest block.

      Retrieve a block by height (integer) or hash (hex string). Omit both for the latest block.

      pin 88de47759e3f83133612a458e9c501672cd2a6ec18e229762332187bb0208041
    • qtcl_get_chain_infoCurrent blockchain state: height, latest block hash, mempool depth, oracle status, and system health vector.

      Current blockchain state: height, latest block hash, mempool depth, oracle status, and system health vector.

      pin da294aa3ddc92eb8408120137fea32c7f15f609abaa550107cfc9faed0939087
    • qtcl_get_oracle_registryList registered quantum oracle nodes participating in 5-oracle Byzantine consensus (3-of-5 majority).

      List registered quantum oracle nodes participating in 5-oracle Byzantine consensus (3-of-5 majority).

      pin db76592f72a259649819ac636a0fd698f26c56c0bff72e1a8eb9ee0895d1afa9
    • qtcl_get_peersList active P2P peers in the QTCL Kademlia DHT network.

      List active P2P peers in the QTCL Kademlia DHT network.

      pin cb19b5ed4cffcb8c17ce46fd77a1cca7b173367919463c168a951b84114033fc
    • qtcl_get_pqc_statusReturn 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.

      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.

      pin 72866ea1dcbbd211f74c6285ad0c00b102a43944d3a5fb98f9a7936a2f01bed5
    • qtcl_get_priceQTCL 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 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.

      pin a0495d26b516b4cf023a19624e9a02fa28cfce444ae45a7bb1b0854d185ae360
    • 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 coherence score.

      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.

      pin c5af928858013804f830f53f46ff37706da9ae48c24067300c6b5b4ca9fdd11e
    • qtcl_get_recent_transactionsList recent transactions, optionally filtered by address. Returns newest first. Max 50 per call.

      List recent transactions, optionally filtered by address. Returns newest first. Max 50 per call.

      pin b51513844fb5ee2bbd5c54a3ff5e722824f73f0cf5b7b894e27aed63eff04ebe
    • qtcl_get_transactionLook up a QTCL transaction by its SHA3-256 hash. Returns full tx details, status, and block height.

      Look up a QTCL transaction by its SHA3-256 hash. Returns full tx details, status, and block height.

      pin def77eed27d84316b7acd5491e4a06f29efcbcc254e576abefc2e9f66162247f
    • qtcl_get_utxosList unspent transaction outputs (UTXOs) for an address. Returns tx_hash, output_index, amount_base per coin.

      List unspent transaction outputs (UTXOs) for an address. Returns tx_hash, output_index, amount_base per coin.

      pin 493d7a3aca5a65898307bfb0f98ca4b0ae92785a68c23e8d7bc8bf6b4d3a2b1e
    • qtcl_quantum_decryptDecrypt 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.

      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.

      pin 06fab060a092b34cb55aae65363915cc08369e55a0c5ffed61feaae39de4803f
    • qtcl_quantum_encryptQuantum-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.

      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.

      pin 43ba8016d9e6e2385e478c0817670ecfe08614746f38361857e19522d029d51d
    • qtcl_quantum_pipelineRun 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.

      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.

      pin c6e16e1288d25b17f161d86171e21ac759dc54628b92d10580ad65cc5a1cf0c9
    • qtcl_repair_utxosNuclear 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.

      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.

      pin 62db31343b6160a96bbdb1e9c63667413f78e6662636b224e62fa91a5ee3fc29
    • qtcl_retro_settleRetroactively 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.

      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.

      pin 28de0bf227330dda0465315e3e853fd605ca3ebe810af6c3fb4668ea4a0e0d17
    • qtcl_send_transactionSubmit 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.

      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.

      pin 1cf7be36ec4f70933ec92c5329b2f46dce6697378bf80e44a39d2991c6582cf4
    • qtcl_sign_messageSign 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.

      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.

      pin 5985179e20efc84e1a67f64db3a3a630b4e6107869544284e2061b656b5254f8
    • qtcl_sign_message_hybridSign 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.

      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.

      pin 407d37783c392b87d33e1f2761cd8c4ab7c4abf16a5bbecb4d9f4a57fbfa2da6
    • qtcl_submit_blockSubmit 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}.

      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}.

      pin d970374989f98b10f316f6c85792f8e9a2dbab8b89c649a825824a611054ca35

    runs · 1

    the latest tests of this entry by the hub and its workers, newest first
    dateworkermethodstatussandboxreason
    2026-10-16 09:49 local-mac remotemcp 2025-06-18 ok22 tools none —