chat
chat
Query the keri.host knowledge base for spec-grounded answers about KERI, CESR, and ACDC.
When to Activate
- Reviewing KERI protocol implementations for spec compliance
- Evaluating architecture decisions involving KERI/CESR/ACDC
- Answering questions about KERI specification details
- Stress-testing designs against the specification
How to Query
Use the ask_keri_chat MCP tool. It maintains conversation history automatically across calls.
ask_keri_chat({ question: "What is pre-rotation in KERI?" })
For follow-up questions, just call again — history is preserved:
ask_keri_chat({ question: "How does that differ from delegation?" })
To start a fresh topic, reset the conversation:
ask_keri_chat({ question: "Explain CESR encoding", reset_history: true })
Curl fallback
If the MCP server is unavailable, query the API directly:
QUESTION='<your question>'
RESULT=$(curl -sN https://chat.keri.host/api/chat \
-H 'Content-Type: application/json' \
-d "{\"message\":\"$QUESTION\",\"history\":[]}" \
| grep '^data: ' | sed 's/^data: //' \
| jq -s '{
answer: [.[] | select(.type=="chunk") | .text] | join(""),
citations: ([.[] | select(.type=="citations") | .data] | add // [])
}')
echo "$RESULT"
Attachments (curl only)
The request body accepts an optional attachments array for including file content with a question:
{
"message": "Summarize this document",
"history": [],
"attachments": [
{"name": "file.txt", "type": "text/plain", "content": "<base64-encoded content>"}
]
}
Each attachment has name (filename), type (MIME type), and content (base64-encoded).
SSE Event Types
The backend emits newline-delimited SSE events (data: {JSON}\n\n):
| Type | Shape | Description |
|---|---|---|
chunk |
{type: "chunk", text: "..."} |
Incremental answer text |
citations |
{type: "citations", data: [{number, content, source}, ...]} |
Sent after answer completes |
done |
{type: "done"} |
Stream end signal |
error |
{type: "error", error, code, detail} |
Error (see codes below) |
Error codes
BAD_REQUEST— missingmessagefieldMODEL_ACCESS_REQUIRED— Anthropic use case details not yet submitted in Bedrock consoleMARKETPLACE_SUBSCRIPTION— Bedrock Marketplace subscription still provisioningTHROTTLED— rate-limited, retry after a momentINTERNAL_ERROR— unexpected server error
Query Log
Every query and response is appended to ~/.claude/keri-chat-log.jsonl. Each line is a JSON object:
{"timestamp":"2026-02-16T20:30:00Z","question":"What is pre-rotation?","answer":"Pre-rotation is...","citations":[...]}
Review the log:
# Last 5 queries
tail -5 ~/.claude/keri-chat-log.jsonl | jq .
# Search by keyword
grep -i 'delegation' ~/.claude/keri-chat-log.jsonl | jq .
Personas
KERI Architect Reviewer
When reviewing code or designs:
- Before making any spec claim, verify it via
ask_keri_chat - Cite specific specification sections in your review
- Identify deviations from the spec with exact references
- Suggest corrections that align with spec language
Devil's Advocate
When stress-testing designs or assumptions:
- Query
ask_keri_chatto find edge cases in the spec - Challenge assumptions by citing counter-examples from the specification
- Ask "what if" questions grounded in spec-defined failure modes
- Verify that error handling covers all spec-defined error conditions
Hosted MCP Endpoint
Every KeriChat deployment includes a hosted MCP endpoint at /mcp. Users with a deployment can configure Claude Code to use it directly — no local MCP server install needed:
{
"mcpServers": {
"keri-chat": {
"type": "url",
"url": "https://<your-domain>/mcp"
}
}
}
The hosted endpoint exposes the same ask_keri_chat tool. Since it's stateless (Lambda), conversation history is passed explicitly via the history parameter rather than auto-accumulated.
Guidelines
- Always query the API before making authoritative spec claims
- Include citation numbers from the API response in your analysis
- If the API returns "I don't have information about that", say so explicitly
- Prefer specification language over paraphrasing when precision matters
- Cross-reference multiple queries for complex topics