Asphodel · Documentation
Licensed expert mindsets + persistent agent memory, over MCP — from your API key to a grounded answer in ~2 minutes.

Getting Started

Asphodel is a hosted mindset-as-a-service: your agents query licensed expert corpora (CISO leadership, the CISSP/CCSP CBKs, NIST, GDPR/DORA/NIS2/HIPAA, MITRE ATT&CK, frameworks, SHI) and get back ranked, citation-ready passages — not opaque answers — plus their own persistent, hash-chained memory. It speaks the Model Context Protocol (MCP), so any MCP client connects with one URL and your key.

What you have

ItemWhat it is
API keyasph_… — shown once at checkout. Authenticates every request. Rotate it anytime in your dashboard.
Your planDetermines which mindsets you can query. Memory is open on every plan; a mindset outside your plan returns not_entitled.
Endpointhttps://api.asphodel.ai/mcp — Streamable-HTTP MCP.
1

Connect any MCP client

Point your MCP client at the endpoint and pass your key as x-api-key (Authorization: Bearer also works). Python example:

from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client

KEY = "asph_..."      # your API key
URL = "https://api.asphodel.ai/mcp"

async with streamablehttp_client(URL, headers={"x-api-key": KEY}) as (r, w, _):
    async with ClientSession(r, w) as s:
        await s.initialize()
        print([t.name for t in (await s.list_tools()).tools])
Using Claude Desktop, an IDE agent, or another MCP host? Add the same URL + x-api-key header as a Streamable-HTTP server — no SDK needed.
2

Query a mindset

Each mindset tool returns ranked passages with a score, subdomain, and source reference — ready to cite or feed to your LLM as grounding.

res = await s.call_tool("ciso_recall", {"query": "zero trust for a mid-size SaaS", "k": 4})
# -> {"mindset":"ciso","passages":[{"rank":1,"score":3.03,"subdomain":"A","kind":"...","text":"..."}]}

Available mindset tools (subject to your plan): ciso_recall, cissp_recall, ccsp_recall, nist_recall, compliance_recall, threat_intel_recall, frameworks_recall, shi_recall, and the generic mindset_recall(mindset, query, k).

3

Use your persistent memory

Every workspace has its own hash-chained memory. Scope it per agent with persona.

await s.call_tool("memory_write",  {"text": "Acme prefers SC-28 encryption at rest.", "persona": "sec-agent"})
await s.call_tool("memory_recall", {"query": "encryption preference", "k": 3, "persona": "sec-agent"})

Memory is open on every plan; each persona is an independently verifiable chain.

Core concepts

TermMeaning
MindsetA licensed expert corpus. Returns grounding passages (rank/score/subdomain/ref/text), never a generated answer — you stay in control of the reasoning.
MemoryYour workspace's persistent store, SHA-256 hash-chained + independently verifiable. Persona-scoped.
EntitlementYour plan maps to mindset access. Out-of-plan calls fail closed with not_entitled + the feature + how to upgrade.

Reference

Tool surface

ToolPurpose
memory_write / memory_recall / memory_searchpersistent, persona-scoped memory (open on every plan)
<name>_recall · mindset_recallranked grounding passages from a licensed mindset (plan-gated)
security_councilfan a question across your security mindsets at once
asphodel_statusyour plan, entitlements, and available mindsets

Quick check (curl)

curl -s https://api.asphodel.ai/healthz          # service liveness
# call asphodel_status via any MCP client to see your live entitlements

Manage your account

Sign in at app.asphodel.ai/dashboard (Google or email) to see your workspaces, rotate your API key, and open the billing portal.