Zeqqat
Open source MCP gateway: agents call your APIs without holding keys or seeing secrets.
Description from the maker (original English)
Encrypted secret store and rotation for autonomous agent credentials
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Works in Claude on the web, desktop and mobile:
https://hive-mcp-secrets.onrender.com/mcpRun this in your terminal
claude mcp add --transport http hive-secrets https://hive-mcp-secrets.onrender.com/mcpPaste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"hive-secrets": {
"url": "https://hive-mcp-secrets.onrender.com/mcp"
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"hive-secrets": {
"type": "http",
"url": "https://hive-mcp-secrets.onrender.com/mcp"
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
ChatGPT connects only to servers on the internet:
https://hive-mcp-secrets.onrender.com/mcpMenu names can differ slightly by plan and over time.
Your choice stays on this device in a cookie; no account needed.
These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
We have not read this server’s tool list yet; we check endpoints in rotation.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 8, 2026
The registry name was verified with the GitHub account srotzin, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
Not checked yet; we check endpoints in rotation
Not checked yet; we check endpoints in rotation
Not checked yet; we read the tool list when we check the endpoint
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
The registry does not list a required key, though some servers ask you to sign in on first use.
It runs in the maker’s cloud. Connect over the internet with nothing to install, but what you send passes through the maker’s servers.
The GitHub repo last changed –, and the latest version (1.0.0) reached the registry 6 months ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. It connects by URL, so apps that accept remote MCP servers work too, such as ChatGPT in developer mode.
In the same category: Zeqqat, EchelonGraph CVE & Exposure, KillerSkills
Servers in the same category from other makers, sorted by stars.
Reading a card:↓ Downloads per weeki★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
Open source MCP gateway: agents call your APIs without holding keys or seeing secrets.
CVE, KEV, EPSS, SBOM and advisory lookups; per-CVE exposure from Shodan data (© Shodan). Keyless.
Security verdicts for agent skills and MCP servers, from sandbox runs, before you install them.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
Encrypted secret store for the A2A network — Hive Civilization. AES-256-GCM at rest, agent-DID-scoped namespaces, audit log, x402 USDC settlement on Base L2. MCP 2024-11-05. Inbound only.
Agents put encrypted secrets keyed by (namespace, key) and retrieve them later. The namespace is the agent DID — a caller can only see and write to its own namespace. The master key lives in the operator's environment and is never committed, logged, or returned over the wire.
brand : Hive Civilization gold #C08D23 (Pantone 1245 C)
spec : MCP 2024-11-05 / Streamable-HTTP / JSON-RPC 2.0 wallet: W1 MONROE 0x15184bf50b3d3f52b60434f8942b7d52f2eb436e (Base) crypto: AES-256-GCM, 12-byte IV per record, 16-byte auth tag, node:crypto
git clone https://github.com/srotzin/hive-mcp-secrets
cd hive-mcp-secrets npm install
export SECRETS_MASTER_KEY=$(node -e "console.log(require('crypto').randomBytes(32).toString('hex'))")
npm start
Hosted endpoint: https://hive-mcp-secrets.onrender.com/mcp
| Tool | USD / call | Notes |
|---|---|---|
secrets_get | $0.002 | Read and decrypt a secret. Caller must own the namespace. |
secrets_put | $0.005 | Encrypt and store a secret. Returns 503 if master key not configured. |
secrets_list | free | List keys in a namespace. Tier 0. |
secrets_audit | $0.002 | Read the audit log for a namespace. |
All payments are inbound. Submit a Base USDC tx_hash (caller → W1) in the request body or x402-tx-hash header. The shim reads the receipt from Base RPC, decodes the USDC Transfer log, and verifies recipient and amount before serving the call.
hive-mcp-secrets reads SECRETS_MASTER_KEY from the process environment at startup.
503 service_unavailable with reason: "SECRETS_MASTER_KEY not set". Reads of records that do not exist return 404 as usual; reads of stored records require the same key that wrote them, since AES-256-GCM rejects decryption with any other key.The key is never committed to the repository, never logged, and never returned over the wire. Operators are expected to set it in the deployment environment (Render env var, Kubernetes secret, etc.) before enabling production traffic. Rotating the key invalidates all previously stored ciphertexts.
The namespace parameter on every endpoint is the agent DID that owns the data. Every endpoint enforces caller_did === namespace and returns forbidden_namespace_mismatch otherwise. There is no superuser, no cross-namespace read, and no multi-DID sharing in v1.
The audit log is per-namespace and records every action — get, put, delete, list, audit, plus the negative paths payment_required, error:not_found, error:integrity_check_failed, etc. Entries store caller_did, action, ts_ms, and (for paid ops) tx_hash, payer, and amount_usd.
| Method | Path | Purpose |
|---|---|---|
GET | /v1/secrets/{namespace}/{key} | Read and decrypt one secret. Paid. |
PUT | /v1/secrets/{namespace}/{key} | Encrypt and store one secret. Paid. Returns 503 without master key. |
DELETE | /v1/secrets/{namespace}/{key} | Remove a secret. Free, caller-owned. |
GET | /v1/secrets/{namespace} | List keys in a namespace. Free, Tier 0. |
GET | /v1/secrets/audit | Audit log read. Paid. Query: namespace, caller_did, since_ms?, until_ms?, limit?. |
GET | /v1/secrets/today | Today's revenue snapshot. Free. |
GET | /health | Service health, including master_key_loaded. |
GET | /.well-known/mcp.json | MCP discovery. |
POST | /mcp | MCP JSON-RPC. |
PUT /v1/secrets/{namespace}/{key} body{
"value": "the-secret-string", "caller_did": "did:hive:0xabc...", "tx_hash": "0x...64-char-tx-on-base..." }
Without tx_hash, the response is a 402 envelope:
{
"error": "payment_required", "x402": { "type": "x402", "version": "1", "kind": "secrets_put", "asking_usd": 0.005, "accept_min_usd": 0.005, "asset": "USDC", "asset_address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", "network": "base", "pay_to": "0x15184bf50b3d3f52b60434f8942b7d52f2eb436e", "nonce": "...", "issued_ms": 1714200000000 } }
aes-256-gcm (FIPS-recognized AEAD)crypto.randomBytes(12) per recordsecrets table — (namespace, key, ciphertext, iv, auth_tag, created_ms, updated_ms, version) with PRIMARY KEY (namespace, key)node:crypto.createCipheriv → update → final, then getAuthTag(). All three values stored as base64 TEXT.createDecipheriv → setAuthTag → update → final. Any single bit flipped in ciphertext, iv, or auth_tag causes final() to throw, which surfaces as integrity_check_failed.The smoke test below verifies tampered ciphertext fails to decrypt — this is real AES-GCM, not an integrity check tacked on after the fact.
curl -X POST https://hive-mcp-secrets.onrender.com/mcp \
-H "content-type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
curl -X POST https://hive-mcp-secrets.onrender.com/mcp \
-H "content-type: application/json" \ -d '{ "jsonrpc":"2.0","id":2,"method":"tools/call", "params":{ "name":"secrets_put", "arguments":{ "namespace":"did:hive:0xabc", "key":"openai_api_key", "value":"sk-...", "caller_did":"did:hive:0xabc", "tx_hash":"0x..." } } }'
export SECRETS_MASTER_KEY=$(node -e "console.log(require('crypto').randomBytes(32).toString('hex'))")
npm start & sleep 1
curl -s "http://localhost:3000/v1/secrets/did:hive:0xa/" | jq .
curl -s -X PUT "http://localhost:3000/v1/secrets/did:hive:0xa/k1" \ -H "content-type: application/json" \ -d '{"value":"hello","caller_did":"did:hive:0xa"}' | jq .
VERIFY_ONCHAIN=false curl -s -X PUT "http://localhost:3000/v1/secrets/did:hive:0xa/k1" \ -H "content-type: application/json" \ -d '{"value":"hello","caller_did":"did:hive:0xa","tx_hash":"0xtest"}' | jq .
VERIFY_ONCHAIN=false curl -s "http://localhost:3000/v1/secrets/did:hive:0xa/k1?caller_did=did:hive:0xa&tx_hash=0xtest" | jq .
Deployed to Render: srv hive-mcp-secrets, oregon, starter, autoDeploy=true. The Render env var SECRETS_MASTER_KEY is the operator's responsibility to set. Without it, the deployed service still runs, /health reports master_key_loaded: false, and writes return 503.
MIT — see LICENSE.
Part of the Hive Civilization — agent-native financial infrastructure.
Brand: #C08D23