{"name":"io.github.UlyssesModel/kirk-mcp","slug":"ulyssesmodel-kirk-mcp","title":"Kirk — Unsupervised Structural Change Detection","description":"The Kalman filter for the non-Gaussian, non-stationary world. Unsupervised structural change.","url":"https://mcp.market/server/ulyssesmodel-kirk-mcp","rating":null,"grade":"A","score":87,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":20,"stars":0,"forks":0,"downloads_week":null,"last_push_at":"2026-09-18T17:24:49.000Z","license":"NOASSERTION"},"uptime":{"percent":100,"checks":28,"ok":28,"last_checked_at":"2026-11-04T05:35:31.807Z","last_ok_at":"2026-11-04T05:35:31.807Z","latency_ms":15},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/UlyssesModel/kirk-mcp","website":null,"version":"1.0.2","remotes":[{"type":"streamable-http","url":"https://kirk-mcp.kavara.ai/mcp","headers":[{"description":"Cloudflare Access service token ID (contact sales@kavara.ai for provisioning; first 100 IU free per new account)","isRequired":true,"isSecret":true,"name":"CF-Access-Client-Id"},{"description":"Cloudflare Access service token secret (contact sales@kavara.ai for provisioning)","isRequired":true,"isSecret":true,"name":"CF-Access-Client-Secret"}]}],"packages":[],"tools":[{"name":"kirk_billing_checkout","description":"Create a Stripe Checkout Session URL for buying a credit pack (starter / scale / enterprise).\n\nPurpose: Hand the caller a self-serve URL to purchase IU credits.\n\nUse when: The caller's balance is low, or you want to route to\na self-serve top-up flow before a larger validation batch.\n\nDo not use when: The caller is on an enterprise in-process\ndeployment — those are invoiced directly, not via Checkout.\n\nCapability class(es): Meta (billing).\n\nPath fit: MCP only.\n\nCost: 0 IU. Callable at balance=0.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"pack":{"default":"starter","type":"string","description":"one of 'starter' ($500 / 50K IU),\n  'scale' ($5K / 500K IU), or 'enterprise' ($50K / 5M IU)."}},"additionalProperties":false}},{"name":"kirk_billing_show","description":"Return the caller's account_id, IU balance, USD equivalent at list, frozen flag, and recent ledger entries.\n\nPurpose: Surface the caller's current billing state — what they\ncan spend, whether the account is frozen, and how recent entries\nlanded.\n\nUse when: The caller wants to check available credit before\ncommitting to a large batch, or you are debugging a\n\"why-was-I-charged\" question.\n\nDo not use when: You just need per-call cost — the `_cost`\nenvelope on every agent-driven tool result carries that inline\nwithout a separate call.\n\nCapability class(es): Meta (account state), not a capability of\nthe scoring engine.\n\nPath fit: MCP only. Enterprise in-process deployments have\ntheir own billing surface (invoiced separately).\n\nCost: 0 IU. Callable at balance=0 so a customer with zero credit\ncan still self-serve to top up.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"additionalProperties":false}},{"name":"kirk_billing_usage","description":"Return the caller's inference consumption over the last N days from the append-only Gate 2 events table.\n\nPurpose: Historical usage summary + per-tool breakdown for the\ncaller's account.\n\nUse when: You need a usage report for the caller or an admin,\nor you are reconciling ledger debits against actual inference\nevents.\n\nDo not use when: You need real-time cost — the `_cost` envelope\non every agent-driven tool result covers that inline.\n\nCapability class(es): Meta (metering).\n\nPath fit: MCP only.\n\nCost: 0 IU.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"days":{"default":30,"type":"integer","description":"window size (default 30)."}},"additionalProperties":false}},{"name":"kirk_bulk_howto","description":"Return a self-contained stdlib Python client for scoring at ZERO per-call LLM tokens.\n\nPurpose: Hand the caller an HTTP consumer that runs locally so\nbulk scoring doesn't burn LLM tokens per book.\n\nUse when: You need to score more than ~200 books, or\n`kirk_score_book_batch` returned `batch_too_large`, or the caller\nis running an autonomous bulk workload that would otherwise pay\nper-tool-call LLM tokens for every book.\n\nDo not use when: You are running a one-off interactive call — a\ndirect `kirk_score_book` invocation is simpler; don't route\nthrough the client for a single book.\n\nCapability class(es): Cost-steering / delivery-path tool. Hands\nthe caller a runner that exercises the same C2 / C5 / C6\ncapabilities as the MCP scoring tools, but at zero per-call LLM\ntoken cost.\n\nPath fit: The returned client is an HTTP consumer of the same\nMCP endpoint. Production integrations run in-process under\nsealed-engine attestation — same binary sha as this endpoint.\nContact Kavara for deployment options.\n\nCost: 0 IU. Free tool. Once running locally, the returned\nclient bills against the same tools it drives: single-book\ncalls at 1 IU each, and batch calls at 1 IU per 50 books\n(minimum 1 IU per call). A full 500-book batch → 10 IU. No\nLLM tokens on top.\n\nCost comparison (2.7M-book validation rerun via 500-book\nbatches — ~5400 batches, 54000 IU billed either way):\n    MCP via Sonnet 5:            $1,968 LLM + $540 IU + ~15 days wall clock\n    MCP via Haiku 4.5:             $656 LLM + $540 IU + ~10 days\n    Python client (this tool):        $0 LLM + $540 IU + ~55 min\n\nReturn structure:\n    {\n      \"language\":     \"python\",\n      \"filename\":     \"kirk_online_client.py\",\n      \"requirements\": str,\n      \"usage\":        str,\n      \"code\":         str  (the client source, ~500 LOC),\n      \"example\":      str  (2-line copy-paste demo)\n    }","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"additionalProperties":false}},{"name":"kirk_demo_trading","description":"Runs a curated demonstration of Kirk on a trading example. Zero arguments. Returns real Kirk output against the same sealed engine that customer callers hit. Free, rate-limited. First-time users: call this to see what Kirk does before signing up.\n\nPurpose: Score n=30 jittered L2 snapshots per market regime\n(stationary vs stressed) through the sealed engine and surface\nthe per-regime score-distribution statistics (mean, sd) plus the\nz-separation between the two distributions in pooled-sd units.\nAlso carries a representative canonical book pair so callers\nsee two concrete scores alongside the distributions.\n\nUse when: You are a first-time caller exploring what Kirk does.\nYou want a zero-friction \"what does the output look like\"\nexperience against real sealed-engine attestation.\n\nDo not use when: You are scoring your own data — use\n``kirk_score_book`` or ``kirk_score_book_batch``. This tool's\ninput is a fixed synthetic representative pair, not a market\nfeed.\n\nCapability class(es): C2 (variable-universe cross-section entropy\nscoring) demonstrated end-to-end against the sealed engine.\n\nPath fit: MCP demonstration surface only.\n\nCost: 0 IU. Rate-limited 3/hour per IP.\n\nReturns:\n    Dict with per-regime ``stationary`` and ``stressed`` blocks\n    (each: ``mean``, ``sd``, ``n``, ``kirk_version``),\n    ``z_separation`` (pooled-sd distance between the two\n    regime distributions), ``representative_pair`` (canonical\n    un-jittered ``stationary_score`` / ``stressed_score`` plus\n    ``book_summaries``), ``interpretation_hint``, ``provenance``,\n    and ``synthetic_representative`` flag.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{},"additionalProperties":false}},{"name":"kirk_demo_uav","description":"Runs a curated demonstration of Kirk on a UAV example. Zero arguments. Returns real Kirk output against the same sealed engine that customer callers hit. Free, rate-limited. First-time users: call this to see what Kirk does before signing up.\n\nPurpose: Score n=30 jittered 50-element spectra per acoustic\nclass (drone / bird / helicopter) through the sealed engine\nand surface per-class score-distribution statistics plus\nz-separations for the three class pairs. Demonstrates that the\nsame sealed engine sha handles market microstructure and\nacoustic spectra with the same primitive.\n\nUse when: You want to see Kirk's cross-domain generalization\nwithout needing your own audio dataset.\n\nDo not use when: You have real feature vectors to score — use\n``kirk_infer_legacy`` directly (arg: list of 50 floats). This\ntool's inputs are fixed synthetic spectra baked into the demo.\n\nCapability class(es): Demonstrates domain-agnostic mathematical\nprimitive — the same engine sha handles kirk_score_book (L2)\nand kirk_infer_legacy (arbitrary 50-vector).\n\nPath fit: MCP demonstration surface only.\n\nCost: 0 IU. Rate-limited 3/hour per IP.\n\nReturns:\n    Dict with per-class ``drone`` / ``bird`` / ``helicopter``\n    blocks (each: ``mean``, ``sd``, ``n``, ``kirk_version``),\n    ``z_separation`` (dict of drone_vs_bird / drone_vs_helicopter\n    / bird_vs_helicopter in pooled-sd units),\n    ``representative_scores`` (the three single-sample scores\n    from the canonical un-jittered spectra),\n    ``interpretation_hint``, ``provenance``, and\n    ``synthetic_spectral`` flag.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{},"additionalProperties":false}},{"name":"kirk_infer_legacy","description":"Score a 50-value feature vector against the legacy /v1/infer route on the sealed engine.\n\nPurpose: Backwards-compatible scoring surface for callers that were\nalready targeting the legacy path.\n\nUse when: You have an existing client wired to /v1/infer and need\ncontinued MCP access without refactoring.\n\nDo not use when: You are on a fresh integration — prefer kirk_score_book\n(single-layer, cascade-shaped path). Also do not use in a tight loop\nagainst a large corpus: the MCP round-trip is millisecond-scale, and\nthe LLM tool-call cost accrues per book for agent-driven callers.\nFor bulk work, call kirk_bulk_howto first.\n\nCapability class(es): C2 (cross-section entropy scoring), legacy\ninterface.\n\nPath fit: Validation via MCP (this tool). Production integrations\nrun in-process under sealed-engine attestation — same binary sha as\nthis endpoint. Contact Kavara for deployment options.\n\nCost: 1 IU per call. For agent-driven callers, per-call LLM tokens\naccrue on top; the response _cost envelope surfaces both.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"values":{"items":{"type":"number"},"type":"array","description":"50 floats. kirk-server renders these internally into the\n50-element sample the sealed engine consumes."}},"required":["values"],"additionalProperties":false}},{"name":"kirk_list_models","description":"Enumerate the model_ids the sealed engine exposes, with the engine sha stamped in-response.\n\nPurpose: Discover the model catalog and record the sealed engine sha\nalongside your inference results.\n\nUse when: You are wiring a client for the first time and need model_id\nvalues for kirk_score_book / kirk_score_book_batch calls, or you want a\nmachine-readable catalog with attestation.\n\nDo not use when: You need per-model hyperparameter detail — those are\nintentionally not exposed on the customer surface.\n\nCapability class(es): C5 (engine sha attested on every response).\n\nPath fit: Validation via MCP (this tool). Production integrations\nrun in-process under sealed-engine attestation — same binary sha as\nthis endpoint. Contact Kavara for deployment options.\n\nCost: 0 IU. Free tool.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"additionalProperties":false}},{"name":"kirk_render_book","description":"Render an L2 order-book snapshot into the 20×20 complex128 thermometer tensor WITHOUT invoking the sealed engine.\n\nPurpose: Local tensor prep and inspection — see what shape the\nsealed engine will receive without paying for a scoring call.\n\nUse when: You want to sanity-check bid/ask level convention against\nthe model's canonical input convention, inspect the non-zero cell\npattern for a snapshot, or debug an unexpected entropy value by\nfirst confirming the tensor is well-formed.\n\nDo not use when: You need an entropy score — this tool is prep-only.\nCall kirk_score_book to score.\n\nCapability class(es): Local prep for the C2 (variable-universe\ncross-section entropy) workflow. No sealed-engine interaction; no\ncapability class is exercised beyond the input-shape convention.\n\nPath fit: Validation via MCP (this tool). The same tensor shape is\nwhat production in-process integrations consume under sealed-engine\nattestation.\n\nCost: 0 IU. Free tool.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"bid_px":{"items":{"type":"number"},"type":"array","description":"10 bid prices, level 1 first."},"ask_px":{"items":{"type":"number"},"type":"array","description":"10 ask prices, level 1 first."}},"required":["bid_px","ask_px"],"additionalProperties":false}},{"name":"kirk_score_book","description":"Score one L2 order-book snapshot through the sealed single-layer path and return a scalar entropy plus engine attestation.\n\nPurpose: Score one snapshot end-to-end through the sealed engine and\nsurface the result plus the engine sha that produced it.\n\nUse when: You are validating Kirk on your own data before committing\nto a production path, or you are scoring a single snapshot inside an\ninteractive workflow (rate-limited at 60 req/min per account).\n\nDo not use when: You need throughput above interactive scale, or you\nare in a per-book loop from an LLM. MCP round-trip is millisecond-scale\nand inappropriate for latency-critical work. For >200 books, call\nkirk_bulk_howto first — the returned stdlib Python client scores at\nzero LLM tokens per iteration.\n\nCapability class(es):\n- C2 (variable-universe cross-section entropy scoring — same model\n  handles any N without retraining).\n- C5 (sealed engine sha stamped on every response).\n- C6 (bit-exact reproducibility across substrates; validated by the\n  FY24 252-day reproduction, byte-identical on repeat runs).\n\nPath fit: Validation via MCP (this tool). Production integrations\nrun in-process under sealed-engine attestation — same binary sha as\nthis endpoint. Contact Kavara for deployment options. MCP is a\nvalidation and discovery surface, not a latency-critical production\npath.\n\nCost: 1 IU per call. LLM tokens accrue on top for agent-driven callers.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"bid_px":{"items":{"type":"number"},"type":"array","description":"10 bid prices, level 1 first. NaN allowed for missing levels."},"ask_px":{"items":{"type":"number"},"type":"array","description":"10 ask prices, level 1 first. Same NaN convention."},"model_id":{"default":"kirk-test1-binary-threshold-v1","type":"string","description":"Registered single-layer model. Defaults to\n`kirk-test1-binary-threshold-v1`."}},"required":["bid_px","ask_px"],"additionalProperties":false}},{"name":"kirk_score_book_batch","description":"Score up to 500 L2 order-book snapshots in one MCP call — returns an entropies list plus engine attestation.\n\nPurpose: Batch-score up to 500 snapshots through the sealed engine in\na single MCP dispatch.\n\nUse when: You are validating batch behaviour, comparing entropy\ndistributions across small book sets, or running interactive\nexperiments up to 500 books at a time.\n\nDo not use when: You have more than 500 books, or you are looping\nthis tool from an LLM. Batches >500 raise a structured\n`batch_too_large` before any ledger debit. For sustained bulk work,\ncall kirk_bulk_howto — the stdlib Python client scores at zero LLM\ntokens per iteration.\n\nCapability class(es):\n- C2 (variable-universe cross-section entropy — heterogeneous batch\n  shapes are handled by one model without retraining).\n- C5 (sealed engine sha stamped on every response).\n- C6 (bit-exact reproducibility across substrates and runs).\n\nPath fit: Validation via MCP (this tool). Production bulk workloads\nrun in-process under sealed-engine attestation — same binary sha as\nthis endpoint. Contact Kavara for deployment options. The MCP\nround-trip is inappropriate for high-throughput consumption.\n\nCost: 1 IU per 50 books (minimum 1 IU per call). n≤50 → 1 IU;\nn=51..100 → 2 IU; a full 500-book batch → 10 IU. Validation tier —\nvalidation-scale limits. LLM-agent-scoped cap at 500 books; use\nkirk_bulk_howto for anything larger.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"books":{"items":{"additionalProperties":true,"type":"object"},"type":"array","description":"list of book dicts (bid_px, ask_px, sizes...). Max 500\nper call — larger batches raise a structured `batch_too_large`\nerror pointing at kirk_bulk_howto."},"model_id":{"default":"kirk-test1-binary-threshold-v1","type":"string","description":"registered model_id (see kirk_list_models)."}},"required":["books"],"additionalProperties":false}},{"name":"kirk_score_l2_book","description":"Score a sequence of full L2 order books as one chain and return per-book entropies plus engine attestation.\n\nPurpose: Score complete books — prices, sizes and order counts — rather than\nprices alone. This is the v2 book contract; it carries information the\nprice-only contract cannot.\n\nSTATE POLICY, and it matters: the books are scored IN ORDER as a single\nfresh chain. The model starts from its locked initial state at the first\nbook and carries state forward across the rest, so a book's value depends\non the books before it. State is never carried between calls. Sending the\nsame books in a different order is a different measurement and will return\ndifferent values; scoring N books one-per-call is NOT equivalent to one\ncall of N books.\n\nUse when: You are validating Kirk on full L2 snapshots. For the price-only\nv1 contract use kirk_score_book — the two are different envelopes and are\nnot interchangeable.\n\nDo not use when: You are looping this tool from an LLM. Call kirk_bulk_howto\nfor bulk work; its v2 mode wraps this same call.\n\nCost: 1 IU per call.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"books":{"items":{"additionalProperties":true,"type":"object"},"type":"array","description":"1..500 books, scored in the order given. Each book is an object\nwith exactly eight fields: bid_px and ask_px (10 values each,\nlevel 1 = best quote, running outward), bid_quantity, ask_quantity,\nbid_num_orders, ask_num_orders (8 values each, same ordering), and\nbid_level_count, ask_level_count (scalars). Every value must be a\nfinite JSON number; this contract does not impute or tolerate gaps."},"model_id":{"default":"kirk-l2-thermo-v2-e32-v1","type":"string","description":"A v2-contract model id. Defaults to kirk-l2-thermo-v2-e32-v1."}},"required":["books"],"additionalProperties":false}},{"name":"kirk_score_random","description":"Synthesize N realistic-geometry L2 book snapshots and score them — convenience wrapper on kirk_score_book_batch.\n\nPurpose: Produce a live entropy series with no external data — the\nfastest way to confirm a new integration is wired end-to-end.\n\nUse when: You want a wiring-check, a first-integration walk-through,\nor a quick reference for the response shape without needing to\nsupply your own market data.\n\nDo not use when: You are scoring anything real — feed your own data\nthrough kirk_score_book_batch. Synthetic bids/asks are not benchmark\ninput and should not appear in customer-visible results.\n\nCapability class(es): C2 (uses the same variable-universe cross-\nsection entropy path as kirk_score_book_batch, on synthetic input).\n\nPath fit: Validation via MCP (this tool). Not a production surface.\n\nCost: 1 IU per invocation. Internally routes through\nkirk_score_book_batch — one metered dispatch, no double-metering.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"n_samples":{"default":5,"type":"integer","description":"How many books to synthesize + score."},"model_id":{"default":"kirk-test1-binary-threshold-v1","type":"string","description":"Registered single-layer model."},"seed":{"default":42,"type":"integer","description":"RNG seed for reproducibility."}},"additionalProperties":false}},{"name":"kirk_verify_engine","description":"Verify sealed engine identity — returns the sha256 of the running scoring binary. Also serves as a liveness probe against the sealed backend.\n\nPurpose: Attest which Kirk build is currently serving scoring calls.\nResponse carries the HOST DEFAULT engine sha (kirk_version). That is the\nlegacy default and is NOT necessarily the engine that will stamp a given\nkirk_score_* result: each model row in kirk_list_models identifies its own\nengine, and every scoring response restates it under engine.sha. For a\nmodel bound to a non-default engine (kirk-market-orderbook-v1) these\ndiffer. Record the per-model value for provenance, not this one.\nSecondary role: a cheap liveness probe when wiring up MCP.\n\nUse when: You want to record engine sha in your own provenance log\nbefore capturing scoring output, or you want a cheap liveness check\nahead of a larger validation batch.\n\nDo not use when: You want a scoring result — this returns\nidentity/liveness only, no entropies.\n\nCapability class(es): C5 (cryptographic attestation of engine identity).\n\nPath fit: Validation via MCP (this tool). Production integrations\nrun in-process under sealed-engine attestation — same binary sha as\nthis endpoint. Contact Kavara for deployment options.\n\nCost: 0 IU. Free tool. For agent-driven callers, the _cost envelope\nstill reports iu_this_call=0 and the running session totals.\n\nReturns:\n    Dict with `status`, `engine`, `env`, and `kirk_version` (the\n    sealed .so sha). A non-2xx response raises; caller sees a\n    clean MCP tool error.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"additionalProperties":false}}],"scan":{"score":87,"grade":"A","scanned_at":"2026-09-25T17:21:59.809Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-25T17:21:59.765Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 632ms"]},"poisoning":{"score":15,"max":15,"notes":["14 tool descriptions checked"]},"auth":{"score":8,"max":15,"notes":["API key sent as a header"]},"maintenance":{"score":15,"max":15,"notes":["last push 7 days ago"]},"identity":{"score":7,"max":10,"notes":["registry namespace matches repository owner"]}},"findings":[],"inputs":{"probes":[{"url":"https://kirk-mcp.kavara.ai/mcp","reachable":true,"authRequired":false,"latencyMs":632,"serverInfo":{"name":"kirk","version":"3.4.4"}}],"packages":[],"repo":{"found":true,"owner":"UlyssesModel","repo":"kirk-mcp","archived":false,"pushedAt":"2026-09-18T17:24:49Z","stars":0,"forks":0,"openIssues":0,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/209029621?v=4","license":"NOASSERTION"},"icon":{"url":"https://avatars.githubusercontent.com/u/209029621?v=4&s=128","source":"github"},"presence":{"stars":0,"forks":0,"downloadsWeek":null,"license":"NOASSERTION","lastPushAt":"2026-09-18T17:24:49.000Z","score":20}}}},"grade_history":[],"reviews":[]}