Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.esheria.ai/llms.txt

Use this file to discover all available pages before exploring further.

The MCP server exposes read-only tools over the Regulatory Pack API. It is for agent hosts that need citation-backed regulatory facts without giving the agent direct database, S3, or pipeline access.

Install

pip install esheria
Run the stdio server:
esheria-mcp serve --stdio
The server reads:
export ESHERIA_API_BASE_URL="https://reg-api.esheria.co.ke"
export ESHERIA_API_KEY="YOUR_ESHERIA_API_KEY"
export ESHERIA_DEFAULT_PACK_ID="KE-DATA-PROTECTION"

Host Configurations

Claude Desktop

{
  "mcpServers": {
    "esheria": {
      "command": "esheria-mcp",
      "args": ["serve", "--stdio"],
      "env": {
        "ESHERIA_API_BASE_URL": "https://reg-api.esheria.co.ke",
        "ESHERIA_API_KEY": "YOUR_ESHERIA_API_KEY",
        "ESHERIA_DEFAULT_PACK_ID": "KE-DATA-PROTECTION"
      }
    }
  }
}

Cursor

{
  "mcpServers": {
    "esheria": {
      "command": "uvx",
      "args": ["--from", "esheria", "esheria-mcp", "serve", "--stdio"],
      "env": {
        "ESHERIA_API_BASE_URL": "https://reg-api.esheria.co.ke",
        "ESHERIA_API_KEY": "YOUR_ESHERIA_API_KEY",
        "ESHERIA_DEFAULT_PACK_ID": "KE-DATA-PROTECTION"
      }
    }
  }
}

Codex MCP

[mcp_servers.esheria]
command = "esheria-mcp"
args = ["serve", "--stdio"]
env = { ESHERIA_API_BASE_URL = "https://reg-api.esheria.co.ke", ESHERIA_API_KEY = "YOUR_ESHERIA_API_KEY", ESHERIA_DEFAULT_PACK_ID = "KE-DATA-PROTECTION" }

Internal Agent Host

{
  "name": "esheria",
  "transport": "stdio",
  "command": "esheria-mcp",
  "args": ["serve", "--stdio"],
  "env": {
    "ESHERIA_API_BASE_URL": "https://reg-api.esheria.co.ke",
    "ESHERIA_API_KEY": "YOUR_ESHERIA_API_KEY",
    "ESHERIA_DEFAULT_PACK_ID": "KE-DATA-PROTECTION",
    "ESHERIA_TIMEOUT_SECONDS": "30",
    "ESHERIA_RETRY_COUNT": "2"
  }
}
If the host cannot find esheria-mcp, use an absolute path from pipx which esheria-mcp, uv tool dir, or the repository wrapper path.

Tool Catalog

ToolPurpose
esheria_healthLiveness check
esheria_readyRuntime dependency readiness
esheria_list_packsDiscover current packs
esheria_get_packInspect one pack
esheria_list_obligationsRetrieve obligations by pack and filters
esheria_check_applicabilityMatch obligations to an entity profile
esheria_verify_claimVerify a generated claim against published facts
esheria_get_filing_calendarRetrieve filing calendar items
esheria_get_evidence_registerRetrieve evidence/control requirements
esheria_list_relationshipsRetrieve relationship facts
esheria_query_regulatory_graphQuery cross-pack relationships
esheria_check_graph_applicabilityRun graph-aware applicability
esheria_get_entity_profileSummarize entity profile context
esheria_export_packExport a published pack
esheria_get_citation_contextRetrieve citation context from pack export

First 5 Tool Calls

Run these after the host connects the server.
{
  "tool": "esheria_health",
  "arguments": {}
}
{
  "tool": "esheria_ready",
  "arguments": {}
}
{
  "tool": "esheria_list_packs",
  "arguments": {
    "limit": 10
  }
}
{
  "tool": "esheria_get_pack",
  "arguments": {
    "pack_id": "KE-DATA-PROTECTION"
  }
}
{
  "tool": "esheria_list_obligations",
  "arguments": {
    "pack_id": "KE-DATA-PROTECTION",
    "query": "breach",
    "limit": 3
  }
}
Expected result: each response includes API data plus trace_id; pack and workflow responses preserve readiness labels, limitations, citation IDs, and published-only results where the API returns them.

Agent Instructions

Agent prompts should require the model to:
  • call Esheria tools before making regulatory assertions
  • preserve citation IDs, quote spans, readiness labels, limitations, and trace IDs
  • avoid legal-advice framing
  • avoid inferring unpublished obligations
  • route unsupported or ambiguous answers to human review