Kingfisher Streaming Inference
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Kingfisher Streaming Inference ingest a new lease event and verify the audit chain"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Kingfisher Streaming Inference
Incremental model scoring over an append-only event log, with a hash-chained audit trail so every decision can be reviewed and independently re-verified. Built for Quarryman Labs (Project Kingfisher).
Why it is shaped this way
The governing constraint is that every decision must carry a reviewable audit trail. That drives the architecture:
Events land in an append-only log (
kingfisherstreaming/log.py). There is no update or delete path; duplicate ids are rejected.Each event is scored incrementally (
kingfisherstreaming/scoring.py) using Welford's online mean/variance. Scoring one event is O(1) and never rescans the log, which is what makes the stream tractable over time.Every decision is written to a hash-chained audit log (
kingfisherstreaming/audit.py). Each record's SHA-256 covers its contents and the previous record's hash, so any later edit, reorder, or deletion is detectable withverify().
Model behaviour sits behind a provider interface
(kingfisherstreaming/providers/base.py) with a deterministic, offline stub
(stub.py) used by the tests and an HTTP-backed implementation (real.py).
The full test suite runs offline with no API key.
Related MCP server: DCL Evaluator
Layout
kingfisherstreaming/
types.py domain types (Event, Score, Decision, ...)
log.py append-only event log (in-memory + optional JSONL)
scoring.py Welford running stats + incremental scorer (core algorithm)
audit.py hash-chained, tamper-evident audit log
engine.py wires log + scorer + audit into one ingest path
providers/
base.py ScoringProvider interface
stub.py deterministic offline provider
real.py HTTP-backed provider (optional 'real' extra)
tests/Install and test
make install # creates .venv and installs with the dev extra
make test # runs pytestOverride the interpreter if you manage your own venv:
make test PY=pythonUsage
from kingfisherstreaming import StreamingInferenceEngine, Event
from kingfisherstreaming.providers.stub import StubProvider
engine = StreamingInferenceEngine(StubProvider(), threshold=3.0, min_samples=30)
score, record = engine.ingest(
Event(event_id="lease-001", stream="office-cbd", timestamp=0.0, value=100.0)
)
print(score.decision, score.normalized_score)
assert engine.verify_audit() # re-checks the entire chainDuring cold start (fewer than min_samples observations on a stream) the
decision is REVIEW, not a guessed pass/flag: with too little history a z-score
is not trustworthy, and saying so is part of the audit trail.
To score against a real endpoint:
pip install '.[real]'
export KINGFISHER_SCORING_ENDPOINT=https://scoring.internal/score
export KINGFISHER_API_KEY=...Running the MCP server
The server speaks JSON-RPC 2.0 over stdio (one JSON object per line), implemented with the standard library only. Logs are JSON on stderr; stdout carries only protocol frames.
python -m kingfisherstreaming serveTools exposed: ingest_event, verify_audit, stream_stats, export_audit.
verify_audit and export_audit exist so a reviewer can pull and re-check the
hash chain through the same interface that produced the decisions.
Example exchange (request on stdin, response on stdout):
{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"ingest_event","arguments":{"event_id":"lease-001","stream":"office-cbd","timestamp":0.0,"value":100.0}}}Batch scoring a file
python -m kingfisherstreaming score events.jsonlOne event object per line. Malformed lines are logged and skipped, not fatal; the exit code is non-zero only if the resulting audit chain fails verification.
Configuration
All configuration is read from the environment and validated at startup:
Variable | Default | Meaning |
|
|
|
|
| z-score magnitude that flags an event |
|
| per-stream samples before scoring leaves REVIEW |
| unset | JSONL path to persist events |
| unset | JSONL path to persist the audit chain |
|
| reject events larger than this |
|
| reject events with more features than this |
|
| logging level |
Invalid configuration exits non-zero with a message on stderr rather than a traceback.
Available Tools
4 toolsexport_auditA
Export audit records as a list for offline review.
Inputs: no named parameters.
ingest_eventB
Score one event incrementally and append it to the audit chain.
Inputs: value (required), stream (required), event_id (required), timestamp (required), +2 more.
stream_statsC
Return running statistics for a stream.
Inputs: stream (required).
verify_auditA
Recompute and verify the entire audit hash chain.
Inputs: no named parameters.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 4 tools
Each tool has a clear, distinct role: ingest_event adds data, verify_audit validates the chain, stream_stats provides metrics, and export_audit retrieves records. There is no functional overlap between any of the four tools.
All tool names follow a consistent verb_noun pattern in snake_case (ingest_event, verify_audit, stream_stats, export_audit). The naming is predictable and immediately communicates each tool's action and target.
With 4 tools, the set is tightly scoped to the server's apparent purpose of event ingestion and audit verification. Each tool earns its place, and the number is well within the typical range for a focused toolkit.
The set covers the core lifecycle of an audit chain: ingest, verify, export, and stream-level statistics. Minor gaps exist, such as no per-record retrieval or stream configuration, but the essential workflows are complete.
Related MCP Connectors
Tamper-evident SHA-256 hash-chained decision notary for EU AI Act, NIST AI RMF & SOC2.
Immutable event logging and audit trail for agent transactions
Signed, append-only receipts of an AI agent's decisions and outcomes, with public proof links.
Append-only decisions with provenance, supersession, retrieval, and audited MCP actions.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI agents to sign decisions with post-quantum cryptographic proofs and maintain secure audit trails for compliance. It provides tools for stamping events, verifying chain integrity, and exporting audit data across industries like finance and healthcare.473 npmMIT
- FlicenseNot gradedqualityFmaintenanceSuperseded. Earlier version of the DCL product (MCP endpoint at /sse with API key, plus an offline desktop audit trail). Not the current path for agents. Use the hosted DCL Trust Oracle: https://github.com/Fronesis-Labs/dcl-webhook (MCP endpoint https://mcp.fronesislabs.com/mcp, Streamable HTTP, x402 payment, no API key).-
- AlicenseNot gradedqualityDmaintenanceCryptographic proof of every AI decision. An immutable, verifiable audit trail MCP server.1MIT
- AlicenseNot gradedqualityDmaintenanceProvides tamper-proof audit logging for AI agents using SHA-256 hash chains, integrity verification, and compliance reporting for the EU AI Act.25 PyPI1MIT