# io.github.shemshallah/qtcl-mcp-server

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

- name: io.github.shemshallah/qtcl-mcp-server
- version: 8.2.0
- connection class: R0 (autonomous)
- trust: 87/100
- quality: 70/100 (needs work)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.shemshallah%2Fqtcl-mcp-server
- tools: https://api.protogrid.dev/v1/servers/io.github.shemshallah%2Fqtcl-mcp-server/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "qtcl-mcp-server": {
      "type": "sse",
      "url": "https://qtcl-blockchain.koyeb.app/mcp/sse"
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: 100
- freshness: 65
- provenance: 80
- drivers: +repository +namespace-matches-repo +reachable +uptime-100% ~updated-170d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 70/100 (needs work)

### protocol: 50 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-06-18; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- warn `protocol.transport`: only the legacy HTTP+SSE transport, deprecated until 2027-07-28
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 71 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- fail `tools.annotations`: no tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: qtcl_get_utxos (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); qtcl_get_chain_info (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); qtcl_get_block (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
- pass `tools.token_cost`: about 3,313 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: no tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 22, about 3,313 tokens to load them all
- tool set hash: a24c8fff93d11b2aedd88ce77e766943
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.shemshallah/qtcl-mcp-server.svg)](https://protogrid.dev/servers/io.github.shemshallah/qtcl-mcp-server)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

- https://qtcl-blockchain.koyeb.app/mcp/sse (sse, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (22)

- `qtcl_create_hybrid_wallet`: 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_wallet`: 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_get_balance`: Check QTCL balance for any address. Returns balance in base units (qsat), UTXO count, and UTXO list. 1 QTCL = 100 qsat.
- `qtcl_get_block`: Retrieve a block by height (integer) or hash (hex string). Omit both for the latest block.
- `qtcl_get_chain_info`: Current blockchain state: height, latest block hash, mempool depth, oracle status, and system health vector.
- `qtcl_get_oracle_registry`: List registered quantum oracle nodes participating in 5-oracle Byzantine consensus (3-of-5 majority).
- `qtcl_get_peers`: List active P2P peers in the QTCL Kademlia DHT network.
- `qtcl_get_pqc_status`: 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_price`: 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_metrics`: 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_transactions`: List recent transactions, optionally filtered by address. Returns newest first. Max 50 per call.
- `qtcl_get_transaction`: Look up a QTCL transaction by its SHA3-256 hash. Returns full tx details, status, and block height.
- `qtcl_get_utxos`: List unspent transaction outputs (UTXOs) for an address. Returns tx_hash, output_index, amount_base per coin.
- `qtcl_quantum_decrypt`: 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_encrypt`: 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_pipeline`: 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_utxos`: 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_settle`: 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_send_transaction`: 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.
- `qtcl_sign_message`: 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_hybrid`: 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_block`: 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}.
