KnosBLOCK
The neutral meter for AI agent work: neither side keeps the count.
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.
- One comment on an issue (a task's page on GitHub) posts the task, your checks and the pay:
/knos fund 20 checks: test. - An AI agent or a person sends the work as a pull request.
- 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
c651460ca90fOBSERVED · 2026-10-11Connect
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 mcp add knos -- None knos==0.3.27 mcp
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.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | FAIL |
| L1 | Static analysis of the code | FAIL |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (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)
fromhex( ... Eval(
alg_hs256-payload
alg_hs256_keyed_with_the_public_key-payload
alg_in_another_case-payload
alg_missing-payload
alg_none-payload
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]),
payload_with_more_after_it-payload
alg_hs256
alg_hs256_keyed_with_the_public_key
return importlib.import_module(f"knos.{name}")return importlib.import_module(f"{__package__}.proof.history")return importlib.import_module(f"{__package__}.recall")recall = importlib.import_module(f"{__package__}.recall") # named, not imported: the relay reaches this module, and its job installs no memory engineconst P: &str = "f55808985a3bd0420821f7444729fd56705a2efbe9625e0de2bc0d95c08e75f3eb7002fcf657a03fa25cb7a84204e1788f66ba06a9be9a9e78aea4f6a6c1992b9a825e67492d787b3f7952680b84c964069c7b03239cec0eb98ca64
const Q: &str = "eb6a15a0efc90803653f7b78f600312406802224da42a880ee720fd62063ea9bc036962f1861a3fc2111043bdb99a47bbde9385c9e08056b4f047f4bb80d8cfae88fb80ea75aabf7f6ec0b5ee821d651b48eea9c783fcc5833a5b9d
"tx": "01bbf7ce281d21b370b55e15d02b22b11bf14386b5658b23a867fbe0e2ef1b4aa480904bf89f88edb366a9787461c10bb3e15935b094ea8607509343cec3615d07800100030598d885fd9d7eeadaceb606ad399ed6d0dde1021eb284ea1bfb977
"tx": "018faa3c159ff572bbc94533385571a6873f61187d20093d07f94751790adba56a9844cc8634a90334620e70bb9c2e73a21842abaef058740b3bfda08a2364fd02800100030598d885fd9d7eeadaceb606ad399ed6d0dde1021eb284ea1bfb977
"tx": "01f76375c3946103a54b16f5335ba50b94299ab5db42802da00a1e4d30804156a45c0146be380cc179242d8920a8a472a6322428f5e9e3f1f20ad8cbf6e7777501800100030598d885fd9d7eeadaceb606ad399ed6d0dde1021eb284ea1bfb977
_LOGGED = re.compile(r"^(?:[^\t]*\t){2}?(\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d(?:\.\d+)?)Z ?(.*)$")stripped = text.lstrip(" \t\r\n")export const TOKEN = "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA";
export const TOKEN = "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA";
export const TOKEN = "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA";
secret = "the-answer-is-7f3a91"
Gates applied: critical_finding, no_behavioural_pass.
c651460ca90ffull audit observations/trust-audit/mcp-server/drexthealpha__knos.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-11 | c651460ca90f | BLOCK | F | 43 | first audit |
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.