Atlas / MCP servers / drexthealpha / Knos

KnosBLOCK

mcp/drexthealpha/knos

The neutral meter for AI agent work: neither side keeps the count.

Verdict
BLOCK
Grade
F
Trust score
43 /100
Exposed tools
—
Transport
stdio
License
MIT
Stars
1
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

The neutral meter for AI agent work: neither side keeps the count.

Pay AI agents only when your checks pass.

For teams that pay AI coding agents on GitHub: a program holds the pay until your checks pass.

Of 241 merged agent pull requests claiming passing tests, 9 failed a test, build, lint or type check.

Check a pull request · Check every claim yourself

How it works

flowchart TB
task["You post a task, your rules for done, and the money"]
work["An AI agent or a person does the work"]
checks["GitHub runs your checks"]
paid["The worker is paid automatically, once you merge the work"]
back["Nobody is paid. At the deadline, the money comes back to you"]
task --> work --> checks
checks -->|pass| paid
checks -->|fail| back

You set the rules first. The money moves only when the work passes them.

  1. One comment on an issue (a task's page on GitHub) posts the task, your checks and the pay: /knos fund 20 checks: test.
  2. An AI agent or a person sends the work as a pull request.
  3. When the checks pass and you merge the work, a program pays the worker.

Ready to try it on your own repository? Get started in five minutes.

Try it in ten seconds

Open the check in your browser. Paste the link to an AI agent's pull request. It tells y

Read from source at commit c651460ca90fOBSERVED · 2026-10-11
Advertisement
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code (pypi)
claude mcp add knos -- None knos==0.3.27 mcp
03

Trust audit

BLOCKgrade F · trust 43/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryFAIL
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (5 observation(s))
Network
none-observed
Shell
declared (6 observation(s))
Dependencies
pinned
Secrets in source
found

Findings (25)

CRITICALObfuscation / stealth · obf.decode_then_exec · CWE-506, CWE-94
src/knos/settle/v2/meter.py:172
fromhex( ...  Eval(
Why it matters. decodes a payload and executes it
HIGHInventory / provenance · inv.suspicious_name · CWE-1104
programs-v2/knos_oidc/fuzz/seeds/claims/alg_hs256-payload
alg_hs256-payload
Why it matters. member named after an attack tool
Fix. remove or justify
HIGHInventory / provenance · inv.suspicious_name · CWE-1104
programs-v2/knos_oidc/fuzz/seeds/claims/alg_hs256_keyed_with_the_public_key-payload
alg_hs256_keyed_with_the_public_key-payload
Why it matters. member named after an attack tool
Fix. remove or justify
HIGHInventory / provenance · inv.suspicious_name · CWE-1104
programs-v2/knos_oidc/fuzz/seeds/claims/alg_in_another_case-payload
alg_in_another_case-payload
Why it matters. member named after an attack tool
Fix. remove or justify
HIGHInventory / provenance · inv.suspicious_name · CWE-1104
programs-v2/knos_oidc/fuzz/seeds/claims/alg_missing-payload
alg_missing-payload
Why it matters. member named after an attack tool
Fix. remove or justify
HIGHInventory / provenance · inv.suspicious_name · CWE-1104
programs-v2/knos_oidc/fuzz/seeds/claims/alg_none-payload
alg_none-payload
Why it matters. member named after an attack tool
Fix. remove or justify
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
src/knos/settle/v2/meter.py:172
return Eval(buyer_id=int(p[2]), seller_id=int(p[3]), order=bytes.fromhex(p[4]), artifact=p[5], policy=bytes.fromhex(p[6]), milestone=int(p[7]),
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
MEDIUMInventory / provenance · inv.binary · CWE-1104
programs-v2/knos_oidc/fuzz/seeds/claims/payload_with_more_after_it-payload
payload_with_more_after_it-payload
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMInventory / provenance · inv.binary · CWE-1104
programs-v2/knos_oidc/fuzz/seeds/rsa_verify/alg_hs256
alg_hs256
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMInventory / provenance · inv.binary · CWE-1104
programs-v2/knos_oidc/fuzz/seeds/rsa_verify/alg_hs256_keyed_with_the_public_key
alg_hs256_keyed_with_the_public_key
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMCode injection · code.dynamic_import · CWE-78, CWE-94, CWE-95
src/knos/cli.py:1114
return importlib.import_module(f"knos.{name}")
MEDIUMCode injection · code.dynamic_import · CWE-78, CWE-94, CWE-95
src/knos/completeness.py:273
return importlib.import_module(f"{__package__}.proof.history")
MEDIUMCode injection · code.dynamic_import · CWE-78, CWE-94, CWE-95
src/knos/ledger.py:2027
return importlib.import_module(f"{__package__}.recall")
MEDIUMCode injection · code.dynamic_import · CWE-78, CWE-94, CWE-95
src/knos/statement.py:1003
recall = importlib.import_module(f"{__package__}.recall")       # named, not imported: the relay reaches this module, and its job installs no memory engine
MEDIUMObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
programs-v2/knos_oidc/fuzz/src/rsa_diff.rs:18
const P: &str = "f55808985a3bd0420821f7444729fd56705a2efbe9625e0de2bc0d95c08e75f3eb7002fcf657a03fa25cb7a84204e1788f66ba06a9be9a9e78aea4f6a6c1992b9a825e67492d787b3f7952680b84c964069c7b03239cec0eb98ca64
MEDIUMObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
programs-v2/knos_oidc/fuzz/src/rsa_diff.rs:19
const Q: &str = "eb6a15a0efc90803653f7b78f600312406802224da42a880ee720fd62063ea9bc036962f1861a3fc2111043bdb99a47bbde9385c9e08056b4f047f4bb80d8cfae88fb80ea75aabf7f6ec0b5ee821d651b48eea9c783fcc5833a5b9d
MEDIUMObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
programs-v2/testdata/adv_compat_2_1.json:575
"tx": "01bbf7ce281d21b370b55e15d02b22b11bf14386b5658b23a867fbe0e2ef1b4aa480904bf89f88edb366a9787461c10bb3e15935b094ea8607509343cec3615d07800100030598d885fd9d7eeadaceb606ad399ed6d0dde1021eb284ea1bfb977
MEDIUMObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
programs-v2/testdata/adv_compat_2_1.json:591
"tx": "018faa3c159ff572bbc94533385571a6873f61187d20093d07f94751790adba56a9844cc8634a90334620e70bb9c2e73a21842abaef058740b3bfda08a2364fd02800100030598d885fd9d7eeadaceb606ad399ed6d0dde1021eb284ea1bfb977
MEDIUMObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
programs-v2/testdata/adv_compat_2_1.json:691
"tx": "01f76375c3946103a54b16f5335ba50b94299ab5db42802da00a1e4d30804156a45c0146be380cc179242d8920a8a472a6322428f5e9e3f1f20ad8cbf6e7777501800100030598d885fd9d7eeadaceb606ad399ed6d0dde1021eb284ea1bfb977
MEDIUMObfuscation / stealth · obf.zero_width · CWE-506, CWE-94
scripts/kani_fee_record.py:405
_LOGGED = re.compile(r"^(?:[^\t]*\t){2}?(\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d(?:\.\d+)?)Z ?(.*)$")
MEDIUMObfuscation / stealth · obf.zero_width · CWE-506, CWE-94
src/knos/policy.py:311
stripped = text.lstrip(" \t\r\n")
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
examples/x402_attested/attested.mjs:11
export const TOKEN = "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA";
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
sdk/settle/index.js:30
export const TOKEN = "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA";
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
sdk/settle/passkey.js:26
export const TOKEN = "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA";
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
tests/test_acceptance_examples.py:87
secret = "the-answer-is-7f3a91"

Gates applied: critical_finding, no_behavioural_pass.

Audited 2026-10-11 · audit v0.4.1 · source sha c651460ca90ffull audit observations/trust-audit/mcp-server/drexthealpha__knos.json · Report an issue / request a re-scan
04

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-11c651460ca90fBLOCKF43first audit
05

Questions

What is the Knos MCP server?

The neutral meter for AI agent work: neither side keeps the count.

Is Knos safe to connect to an agent?

No — not without reading the findings first. The audit graded it F (43/100) and found 7 critical or high issues in the source. Each one is listed on this page with the file and line it is on.

What credentials does Knos need?

It reads DEPLOY_TOKEN_OF_THE_JUDGE, GH_TOKEN, GITHUB_TOKEN, KNOS_AGENT_BROAD_TOKEN, KNOS_AGENT_TOKEN, KNOS_FAUCET_KEY, KNOS_KEYS, KNOS_MEMBER_KEY, KNOS_RELAY_KEY, KNOS_SAS_KEYPAIR, KNOS_WALLET_KEY and SIBYL_CREDENTIALS from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does Knos run?

It speaks stdio, so it runs as a local process your client starts. It is published on npm as slug at 1.0.0.

How current is this page?

The grade is for one exact copy of the source (c651460ca90f), read on 2026-10-11. The repository is watched and re-audited when it changes.

Advertisement