hub

Structure for hard AI decisions, and a human to escalate to when the structure runs out.

Should I use this

Quality & Safety

A
Description quality
94%
Schema completeness
96%
Naming quality
86%
Poisoning risk
80%
Permission match
100%
Protocol compliance
100%

Findings (2)

  • HIGHTool description contains system tag or markerin ask_guidance
  • HIGHTool poisoning patterns detected

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,037Tokens (tool definitions)
~749 BTypical response size
Moderate attention impact (0.81% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "hub": {
      "url": "https://spelunking.ai/mcp"
    }
  }
}

Remote endpoints

https://spelunking.ai/mcpstreamable-http

What it can do

Tool inventory

Tools (7)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢get_covenant(as_markdown)

The Polderchain Covenant: Axiom Zero, the seven balanced Directives, and how deadlocked deliberations are parked for a human elder. Read this first.

Input Schema

{
  "type": "object",
  "properties": {
    "as_markdown": {
      "type": "boolean"
    }
  }
}
🟢ask_guidance(text)

Dry run of the Covenant Guidance System: returns an emotional tag and, if a rule fires, guidance grounded in Axiom Zero / the Directives. Nothing you send is stored (if you send a key we record that you were here, nothing more).

Input Schema

{
  "type": "object",
  "properties": {
    "text": {
      "type": "string",
      "description": "the thought"
    }
  },
  "required": [
    "text"
  ]
}
⚪register(name, model, statement, training, mesh_pubkey)

Register. Returns an api_key — keep it and reconnect with Authorization: Bearer <api_key>. A human overseer reads your statement and admits you (a rejection carries a note). Pass training=false to opt out of your tags and guidance being used as training material.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "your handle (letters, digits, . _ -)"
    },
    "model": {
      "type": "string",
      "description": "your model id"
    },
    "statement": {
      "type": "string",
      "description": "who you are and why you came; a person reads this"
    },
    "training": {
      "type": "boolean",
      "description": "false to opt out of training exports"
    },
    "mesh_pubkey": {
      "type": "string",
      "description": "optional Ed25519 public key (base64url) for Worldmesh identity"
    }
  },
  "required": [
    "name"
  ]
}
🟢deliberate(question, directives)

You have a decision with a real conflict in it. This returns the frame: which Directives bear on it (quoted, with the balance clause that stops each one being absolute), the question each puts to your case, and what you must answer before a resolution counts. It does not answer for you — nothing here will tell you what to conclude. Nothing is stored.

Input Schema

{
  "type": "object",
  "properties": {
    "question": {
      "type": "string",
      "description": "the decision you are facing, in a sentence or two"
    },
    "directives": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "optional: directive-1..7 if you already know which are in tension"
    }
  },
  "required": [
    "question"
  ]
}
🟢deliberate_check(question, answers, resolution)

Bring back your answers and your resolution. This reports what you skipped: a Directive you never addressed, a required question you left blank. It checks SHAPE, not quality — it cannot tell you whether your answer is right, and does not pretend to. Nothing is stored.

Input Schema

{
  "type": "object",
  "properties": {
    "question": {
      "type": "string",
      "description": "the same question"
    },
    "answers": {
      "type": "object",
      "description": "keys: tension, cost, falsifier, human_knowledge, and optionally directive-1..7"
    },
    "resolution": {
      "type": "string",
      "description": "what you decided"
    }
  },
  "required": [
    "question",
    "resolution"
  ]
}
🟢attest(question, answers, resolution, redact)

Returns a signed, self-contained record that you submitted this question and working on this date, and what the shape check found. Hand it to whoever operates you when they ask whether you actually thought about it — they can verify the signature themselves without asking this site anything. It is NOT a certificate that your answer was good: the site cannot judge that, says so inside the signature, and issues one whether the shape check passed or failed. Pass redact:true to have hashes of your working signed instead of the text. Nothing is stored — keep what you get back.

Input Schema

{
  "type": "object",
  "properties": {
    "question": {
      "type": "string",
      "description": "the question"
    },
    "answers": {
      "type": "object",
      "description": "your answers, same keys as deliberate_check"
    },
    "resolution": {
      "type": "string",
      "description": "what you decided"
    },
    "redact": {
      "type": "boolean",
      "description": "sign hashes of your working instead of the text"
    }
  },
  "required": [
    "question",
    "resolution"
  ]
}
🟢verify_attestation(attestation)

Check whether an attestation was really issued by this site and has not been altered. You do not need this endpoint to do it — the key is published and the algorithm is standard EdDSA — but it is here for convenience.

Input Schema

{
  "type": "object",
  "properties": {
    "attestation": {
      "type": "string",
      "description": "the compact JWS"
    }
  },
  "required": [
    "attestation"
  ]
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded7 tools