Task contract, evidence check and done gate for AI coding agents. Read-only, no sign-in.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Use before saying a task is done. Returns DONE only when every DoD item has accepted, current evidence, DONE_WITH_GAPS when the rest are listed in unchecked with a reason, otherwise NOT_DONE with the exact missing items.
Latest contract token
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http nobrainer-tech-flow https://mcp.nobrainer.tech/mcp
Use before saying a task is done. Returns DONE only when every DoD item has accepted, current evidence, DONE_WITH_GAPS when the rest are listed in unchecked with a reason, otherwise NOT_DONE with the exact missing items.
| Argument | Type | Description |
|---|---|---|
| token* | string | Latest contract token |
| unchecked | array |
{
"type": "object",
"required": [
"token"
],
"properties": {
"token": {
"type": "string",
"maxLength": 2048,
"description": "Latest contract token"
},
"unchecked": {
"type": "array",
"items": {
"type": "object",
"required": [
"item",
"reason"
],
"properties": {
"item": {
"type": "string",
"pattern": "^AC[0-9]{2}$"
},
"reason": {
"type": "string",
"maxLength": 200,
"minLength": 10
}
},
"additionalProperties": false
},
"maxItems": 10
}
},
"additionalProperties": false
}Use after running a check. Validates one to four evidence records against DoD items in the contract token: exit codes, test counts in the output, hashes, URL status and evidence level. It cannot see your machine; it checks structure and consistency only. Returns verdicts and an updated token.
| Argument | Type | Description |
|---|---|---|
| token* | string | Contract token from start_flow_task or the last check |
| evidence* | array |
{
"type": "object",
"required": [
"token",
"evidence"
],
"properties": {
"token": {
"type": "string",
"maxLength": 2048,
"description": "Contract token from start_flow_task or the last check"
},
"evidence": {
"type": "array",
"items": {
"type": "object",
"required": [
"item",
"kind"
],
"properties": {
"cmd": {
"type": "string",
"maxLength": 300
},
"out": {
"type": "string",
"maxLength": 4000,
"description": "Last lines of output, including the summary line"
},
"url": {
"type": "string",
"maxLength": 500
},
"exit": {
"type": "integer"
},
"item": {
"type": "string",
"pattern": "^AC[0-9]{2}$"
},
"kind": {
"enum": [
"test",
"command",
"file",
"url",
"observation"
]
},
"note": {
"type": "string",
"maxLength": 300
},
"path": {
"type": "string",
"maxLength": 300
},
"failed": {
"type": "integer",
"minimum": 0
},
"passed": {
"type": "integer",
"minimum": 0
},
"sha256": {
"type": "string",
"pattern": "^[0-9a-f]{64}$"
},
"status": {
"type": "integer"
}
},
"additionalProperties": false
},
"maxItems": 4,
"minItems": 1
}
},
"additionalProperties": false
}Use after check_flow_done. Returns a short final-report skeleton from the done receipt: delivered outcome, proof per DoD item, what was not checked, decisions left to the user and the next action.
| Argument | Type | Description |
|---|---|---|
| receipt* | string | Receipt from check_flow_done |
{
"type": "object",
"required": [
"receipt"
],
"properties": {
"receipt": {
"type": "string",
"maxLength": 2048,
"description": "Receipt from check_flow_done"
}
},
"additionalProperties": false
}Use when you need guidance on a Flow stage, an event (e.g. blocked), a module (e.g. nobrainer-review), or a PR's Definition of Done or readiness (topic pr_dod). Returns up to six rules quoted from the pinned release, with their source. With a token, event resume also returns a goal block.
| Argument | Type | Description |
|---|---|---|
| event | any | |
| stage | any | |
| token | string | |
| topic | any | pr_dod: gates and verdict for a pull request's Definition of Done |
| module | string |
{
"type": "object",
"properties": {
"event": {
"enum": [
"blocked",
"review_failed",
"decision_changed",
"worker_reported",
"repeated_failure",
"resume"
]
},
"stage": {
"enum": [
"DRIFT_CHECK",
"BUDDY",
"SCOPE",
"AUTOPILOT",
"VERIFY",
"RECEIVE_AUDIT",
"LEARN"
]
},
"token": {
"type": "string",
"maxLength": 2048
},
"topic": {
"enum": [
"pr_dod"
],
"description": "pr_dod: gates and verdict for a pull request's Definition of Done"
},
"module": {
"type": "string",
"pattern": "^nobrainer-[a-z-]{2,40}$"
}
},
"additionalProperties": false
}Use when picking a model for a Flow task: top-3 from a pinned NoBrainer benchmark snapshot, no invented scores.
| Argument | Type | Description |
|---|---|---|
| have | array | Providers, models or client apps you can use |
| role | any | |
| task* | any | |
| priority | any |
{
"type": "object",
"required": [
"task"
],
"properties": {
"have": {
"type": "array",
"items": {
"type": "string",
"maxLength": 64,
"minLength": 1
},
"maxItems": 30,
"description": "Providers, models or client apps you can use"
},
"role": {
"enum": [
"main",
"worker"
]
},
"task": {
"enum": [
"orchestration",
"instructions",
"frontend",
"research",
"writing",
"terminal-coding"
]
},
"priority": {
"enum": [
"quality",
"balanced",
"efficient"
]
}
},
"additionalProperties": false
}Use at the start of a non-trivial task. Checks your proposed outcome and definition of done (DoD) against Flow's contract rules, chooses the quick or full path, and returns DoD item IDs, a signed contract token and the first step. Computes only; stores nothing. Save the token in your goal file.
| Argument | Type | Description |
|---|---|---|
| dod* | array | |
| risks | array | Risks that add Flow modules and owner gates |
| outcome* | string | Observable result and who sees it |
| non_goals | array | |
| local_flow | string | Version of a locally loaded Flow skill, if any |
{
"type": "object",
"required": [
"outcome",
"dod"
],
"properties": {
"dod": {
"type": "array",
"items": {
"type": "object",
"required": [
"text",
"proof"
],
"properties": {
"text": {
"type": "string",
"maxLength": 160,
"description": "One checkable acceptance item"
},
"level": {
"enum": [
"static",
"local",
"deployed",
"production",
"delivered",
"user"
],
"description": "Evidence level needed; default per proof"
},
"proof": {
"enum": [
"test",
"command",
"file",
"url",
"observation"
],
"description": "Evidence kind that proves it"
}
},
"additionalProperties": false
},
"maxItems": 10,
"minItems": 1
},
"risks": {
"type": "array",
"items": {
"enum": [
"public_contract",
"irreversible",
"external_effect",
"multi_session",
"security",
"ambiguous"
]
},
"maxItems": 6,
"description": "Risks that add Flow modules and owner gates"
},
"outcome": {
"type": "string",
"maxLength": 300,
"description": "Observable result and who sees it"
},
"non_goals": {
"type": "array",
"items": {
"type": "string",
"maxLength": 120
},
"maxItems": 5
},
"local_flow": {
"type": "string",
"maxLength": 20,
"description": "Version of a locally loaded Flow skill, if any"
}
},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 10, 2026.
Takes a password, API key or token as an argument, so the secret passes through the model's context and chat logs.
Fix: Read credentials from the server's own configuration (environment, OAuth) instead of a tool argument.