ai-delivery
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., "@ai-deliveryCan you get the context for work item 42?"
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.
AI Delivery
A personal design for AI-native software delivery in organizations: let agents move work forward, while people keep authority over intent, risk, and release.
The missing layer is shared delivery memory. A coding agent can produce a patch, but an organization needs every agent and person to work from the same approved intent, hand work across roles without losing context, and show evidence tied to the exact work and source revision under review. A green check is useful only when the team can tell what it checked, against which revision, in which environment, and under whose authority.
AI Delivery is an original, small reference implementation of that idea. It was informed by public work on AI-driven development lifecycles, agent workflows, MCP, and reusable agent skills. It does not implement or claim conformance with any one organization's development method. The AI-DLC references below are inspiration and background, not dependencies.
What exists today
This repository contains a runnable Python package, an offline demonstration, and an MCP server using one shared service layer. The implemented lifecycle includes:
versioned work items with compare-and-swap updates (
expected_revision);role-tagged handoffs tied to a work revision;
append-only evidence tied to a work revision, actual Git SHA-1/SHA-256, and named environment;
a QA gate with mandatory
implementationandqaevidence, latest-result semantics, work-status checks, and stale-evidence rejection;a separate release-owner attestation that requires the QA gate to pass for approval;
local JSON persistence with atomic replacement and POSIX file locking on macOS and Linux; Windows is not supported by this file adapter.
A decided_by value is an audit claim supplied by the caller. This local reference server does not authenticate users or enforce organizational roles. It has no deployment integration, so recording an approval never deploys software. The JSON adapter is suitable for a local demonstration; it is not a network service, distributed store, or complete enterprise control plane.
Related MCP server: agileharness
Run it
Python 3.11 or newer is required.
python -m venv .venv
. .venv/bin/activate
python -m pip install -e '.[dev]'
ai-delivery demo --store /tmp/ai-delivery-demo.json
pytestThe demo creates a fictional reading-list export item, shows a closed gate before evidence exists, records implementation and QA evidence for one source revision in qa, and records a separate release-owner attestation. The demo makes no network calls and performs no deployment.
Connect an MCP client
Install the package in an environment available to the MCP host, then launch the stdio server:
AI_DELIVERY_STORE=/path/to/your/delivery.json ai-delivery-mcpA client configuration commonly looks like this; exact configuration keys depend on the client:
{
"mcpServers": {
"ai-delivery": {
"command": "python",
"args": ["-m", "ai_delivery.mcp_server"],
"env": {
"AI_DELIVERY_STORE": "/path/to/your/delivery.json"
}
}
}
}The server currently exposes eight tools: list_work_items, get_context, create_work_item, update_work_item, handoff_work, record_evidence, evaluate_qa_gate, and record_release_decision. Every update, handoff, evidence append, and release decision names the expected work revision. A stale write is rejected, so the caller must reread context before proceeding. The server exposes tools only; MCP resources and prompts are possible future interfaces, not implemented features.
For a real organization, put the MCP endpoint behind authenticated identity, authorization, audit, and network controls. Give each role the narrow operations it needs: product can draft intent, engineering can create implementation revisions, QA can record test evidence, and an authorized human release owner can attest to a release decision. Those boundaries are design goals here; this demo accepts caller-supplied role labels and does not enforce them.
A delivery memory with three layers
AI Delivery separates durable authority from agent convenience. This is a design proposal for an organization-scale implementation; only versioned work items, handoffs, evidence, and the gate are present in this repository today.
Layer | What belongs there | Authority and freshness |
Canonical delivery record | Approved specs, ADRs, work-item revisions, handoffs, evidence manifests, gate results, and human decisions | Authoritative. Each record has an immutable revision or identifier, actor, time, parent references, and content/source digest. A change creates a new revision; it does not silently rewrite history. |
Working agent memory | Current assignment, relevant context excerpts, decisions still in progress, and next actions | A disposable, task-scoped cache. It carries source references and the revision/hash it was read from. Before a write or handoff, the agent refreshes if that source has advanced. It cannot override the canonical record. |
Derived search index | Embeddings, keyword indexes, summaries, and cross-project discovery metadata | Rebuildable projection. Every indexed chunk points to its source record and exact revision/hash. Results are hints; the reader fetches and validates the canonical source before acting. |
In the proposed Git-backed mode, reviewed specifications, ADRs, and work-item manifests live in version control. Evidence can be a small signed or immutable manifest in the repository, with large reports and logs in an approved artifact store addressed by digest. A portable transactional store can serve the same record contract where Git is not the right persistence layer. Git commits make changes reviewable; a storage adapter provides queries and concurrent writes. Neither an index nor an agent's notes becomes the source of truth.
Freshness is explicit. A handoff names the work revision. Evidence names both the work revision and source commit digest, plus the environment and outcome. A later revision does not inherit earlier evidence. A search result or working-memory note is accepted only if its source revision still matches the canonical record. Retention is policy-driven: preserve decisions and evidence for the required audit period, expire disposable agent memory quickly, and rebuild or delete derived indexes according to their source and retention policy.
Credentials, tokens, private keys, and personal data do not belong in Git specs, agent memory, evidence summaries, or search indexes. A production adapter should use a secrets manager or short-lived identity exchange and store only a reference to the secret or credential event where audit requires one. Access to records and tools should follow least privilege, with environment and project boundaries enforced by the service rather than by skill instructions alone.
Gates and role skills
The proposed lifecycle uses five review points. Each has a small SKILL.md example under skills/gates, following the public Agent Skills file format. Skills tell an agent how to prepare work and evidence; a trusted service and an authorized person must enforce decisions. A skill cannot grant access or prove that a human approved something.
Gate | Agent prepares | Required exit evidence | Status here |
Inception | Intent, users, constraints, success measures, assumptions, and a small set of work items | Human-confirmed scope and acceptance criteria | Proposed skill; no inception gate in the package |
Design / ready for development | Design notes, ADR proposals, dependencies, risks, and implementation slices | Reviewed design where needed; accepted ready-for-dev revision | Proposed skill; current package can version the spec but has no design approval policy |
Implementation / review | Code changes, test results, source commit, and review response | Implementation evidence tied to exact work revision and source hash; review disposition | Package can record implementation evidence; it does not run tests or perform code review |
QA | Test plan, environment, scenario results, and failures | Passing QA evidence for the same work revision and source hash | Implemented as a simple required-evidence gate |
Release / post-release | Release notes, rollout and rollback plan, monitoring signals, and post-release observations | Human release decision; later, deployment and post-release evidence | Package records a separate release attestation; it has no deployment or post-release gate |
The hard-coded minimum gate policy requires the most recent relevant result for both implementation and qa to be passed, the current work status to be implemented or qa_ready, and all evidence to match the current revision, source hash, and QA environment. A later failure blocks the gate until a newer passing result is recorded. Callers may add evidence kinds; they cannot remove the two minimum kinds. The local service does not establish who is allowed to set a work status or write a result.
Walkthrough
Product records a concise outcome and acceptance criteria as revision 1.
The work is handed to engineering with a role-tagged note that points to revision 1.
Engineering creates revision 2, records a source commit hash, and moves it to a testable status.
Engineering and QA record results against revision 2, the same source hash, and
qa.The service evaluates the gate. Missing, stale, wrong-environment, or failed latest evidence keeps it closed.
A release owner reviews the evidence and records a decision for the target environment. This record is separate from QA and does not deploy.
In a future operations stage, deployment and post-release observations would be recorded against the released source revision and environment, then fed into future work as linked evidence and new requirements.
If a new work revision is created, evidence from the old revision remains available for audit but does not satisfy the current gate. If two writers update from the same revision, the second write sees the new revision and fails with a conflict rather than replacing the first writer's work.
Architecture
flowchart LR
Product[Product agent / human] --> Canonical[Versioned delivery records]
Engineering[Engineering agent] --> Canonical
QA[QA agent] --> Canonical
Owner[Human release owner] --> Canonical
Canonical --> Service[Policy and revision service]
Service --> MCP[MCP tools]
MCP --> Agents[Compatible agent clients]
Canonical --> Index[Derived search index]
Index -->|source refs and revision checks| Service
Service --> Gate[QA evidence gate]
Gate -->|passing QA evidence| HumanDecision[Separate release decision]
HumanDecision -->|future integration| Operations[Deployment and post-release evidence]The current implementation is deliberately smaller: one Python service, a local JSON adapter, an offline CLI, and an MCP stdio adapter. It does not contain the Git canonical backend, transactional database, search index, authenticated role policy, skill runner, CI/deployment connector, or post-release observation pipeline shown as future design.
Design principles and public references
This project synthesizes a few useful public ideas rather than claiming a new standard:
AWS's AI-Driven Development Life Cycle overview describes Inception, Construction, and Operations, with AI planning and execution under human oversight. The AWS open-source adaptive workflow is a separate, evolving implementation of that methodology.
Anthropic's Building Effective Agents recommends simple composable patterns and describes where fixed workflows, gates, and more autonomous agents fit. AI Delivery applies that spirit to explicit revision and evidence contracts.
The MCP specification defines a protocol for exposing tools, resources, and prompts. AI Delivery currently uses MCP tools as the portable action interface; transport and authorization remain separate concerns.
The Agent Skills specification defines a portable folder format centered on
SKILL.md, with optional scripts, references, and assets. The example gate skills here are workflow instructions, not policy enforcement.
Roadmap
The code-backed MVP is the revision, handoff, evidence, QA gate, release-attestation, CLI, MCP, and local-store flow. The next design steps are a Git-backed canonical adapter, a proper multi-user transactional store, authenticated role authorization, policy configuration owned by the service, review and post-release evidence schemas, and integration tests across concurrent writers. Search indexing and deployment should follow only when their source provenance, access policy, and recovery behavior can be made explicit.
License
MIT. See LICENSE.
Available Tools
8 toolscreate_work_itemC
Create a versioned work item.
| Name | Required | Description | Default |
|---|---|---|---|
| role | No | product | |
| spec | Yes | ||
| title | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it discloses almost nothing: not what permissions are required, not what "versioned" means operationally, and not whether the created item is immutable or drafts a new revision. It states a mutation but gives no side-effect context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is efficient and front-loaded with the verb and resource, with no filler. But it is terse to the point of under-specification, so the brevity does not fully earn its place given the missing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and 0% parameter description coverage, the description is too thin. The existence of an output schema means return values need not be explained, but preconditions, the meaning of "versioned," and parameter intent are all absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description is responsible for explaining the three parameters, and it mentions none of them. Parameter names like title and spec are somewhat self-evident, but role (with a default of "product") and spec are ambiguous and remain unexplained in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description pairs a specific verb ("Create") with a specific resource ("versioned work item"), so an agent knows exactly what operation is performed. However, it offers no differentiation from the siblings that also involve work items (list_work_items, update_work_item, handoff_work), so it stays short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives. The only implicit signal is that "create" is distinct from the sibling update/list tools, which the agent must infer on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
evaluate_qa_gateC
Evaluate whether current revision has all passing QA evidence.
| Name | Required | Description | Default |
|---|---|---|---|
| work_item_id | Yes | ||
| required_kinds | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing: it doesn't say whether this is a read-only check or mutates gate state, whether it blocks a handoff or release decision, what permissions are needed, or how the 'current revision' is resolved. For a gate-evaluation tool with zero annotation coverage this is a substantial gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler or repetition. It is efficient, though its brevity reflects under-specification rather than disciplined concision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The presence of an output schema relieves the description of explaining return values, but everything else is missing: parameter meaning, read-vs-write nature, gate outcome semantics, and how it relates to the evidence and release-decision siblings. Given two required undocumented parameters and no annotations, this is inadequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for both required parameters. The description never mentions work_item_id and gives no explanation of required_kinds — which is the central concept of the tool (which evidence kinds count toward the gate). At most it vaguely implies the existence of evidence kinds, adding nearly nothing over the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Evaluate') and resource ('QA gate') and states the condition being checked (all passing QA evidence on the current revision). However, it does not distinguish this from siblings like record_evidence or record_release_decision, and 'current revision' is never defined even though no revision parameter exists.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of prerequisites (e.g., evidence must be recorded first), and no reference to alternative tools such as record_evidence or record_release_decision. The agent must infer the workflow context entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_contextB
Read the current spec, revision, evidence, and role handoffs.
| Name | Required | Description | Default |
|---|---|---|---|
| work_item_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and 'Read' does imply a non-mutating operation. It usefully signals that the response is an aggregate of several artifacts (spec, revision, evidence, handoffs), which is real behavioral context, but it says nothing about scoping, permissions, or whether the read is cached or live.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler or repetition. It is efficient, though terse enough that it could have absorbed a routing clause without becoming bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Because an output schema exists, the return values need not be explained, and the description does list the artifact categories returned. What remains missing is the linkage to the required work_item_id and any signal of when this read is appropriate, so it is adequate but not complete for a context-gathering tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the sole required parameter 'work_item_id' is undocumented in both schema and description. The description alludes to a single item's context but never names or explains the identifier, leaving the agent to infer the parameter's meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('Read') and enumerates the resources returned (spec, revision, evidence, role handoffs), so the agent knows this is a composite read of a work item's state. It is clearly distinct from the write siblings (create_work_item, update_work_item, record_evidence), though it never explicitly positions itself against list_work_items.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, no prerequisites, and no mention of alternatives. The agent must infer that this is the read step preceding updates or handoffs, which is guesswork rather than instruction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
handoff_workC
Record a role-to-role handoff tied to the current revision.
| Name | Required | Description | Default |
|---|---|---|---|
| note | Yes | ||
| to_role | Yes | ||
| from_role | Yes | ||
| work_item_id | Yes | ||
| expected_revision | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'Record' implies a mutation, and 'tied to the current revision' hints at concurrency/optimistic-locking behavior, but the description never states whether it requires a matching revision, what happens on conflict, whether the handoff is idempotent, or what permissions are needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words. However, the brevity reflects under-specification rather than disciplined conciseness for a 5-parameter mutation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no explanation, but for a 5-required-parameter mutation with zero annotation coverage and zero schema description coverage, the description leaves critical behavioral and parameter context unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 5 required parameters. The description indirectly accounts for from_role/to_role ('role-to-role') and expected_revision ('current revision'), but work_item_id and note are left entirely undocumented in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Record') and resource ('role-to-role handoff') with a scoping detail ('tied to the current revision'), which distinguishes it from siblings like record_evidence and record_release_decision. It does not explicitly name a sibling alternative, but the action and object are unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to hand off work versus recording evidence or updating a work item, and no prerequisites or exclusions are given. The agent must infer the usage context entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_work_itemsB
List work item IDs, titles, and current revisions.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It hints at a read-only listing and names the returned fields, but says nothing about scope (all work items vs. a subset), pagination, ordering, or the fact that no parameters/filtering are accepted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words; the verb and the returned fields come first. Nothing extraneous is included.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the description need not explain return values, and the zero-parameter schema is trivial. The main gap is the absence of annotations, leaving the read-only/side-effect profile implicit rather than declared.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the rubric the baseline is 4. There is nothing further for the description to disambiguate about arguments.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (List) and resource (work items) and names the returned fields (IDs, titles, current revisions), so its function is unambiguous. It does not explicitly distinguish itself from siblings such as get_context, but the read-only listing intent is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus alternatives like get_context, nor any mention of prerequisites, scope, or exclusions. Usage is only implied by the word 'List'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_evidenceC
Append evidence tied to the current revision, hash, and environment.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| outcome | Yes | ||
| summary | Yes | ||
| environment | Yes | ||
| recorded_by | Yes | ||
| source_hash | Yes | ||
| work_item_id | Yes | ||
| expected_revision | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. 'Append' hints at append-only/immutable semantics and 'current revision' hints at optimistic-concurrency checking, but the description never states what happens on a revision mismatch, whether the record is mutable, permission requirements, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, and the key scoping constraints (revision, hash, environment) come first. It is efficient, though arguably terse to the point of under-specification.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no explanation, but for an 8-required-parameter mutation tool with zero annotations and 0% schema coverage, the description omits too much to let an agent invoke it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 8 required parameters, so the description must compensate. It only gestures at three of them (revision, hash, environment) and leaves kind, outcome, summary, recorded_by, and work_item_id completely undefined, adding little semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ('Append evidence') scoped by revision, hash, and environment, so an agent can grasp the core operation. It does not, however, distinguish this tool from the sibling record_release_decision, which is a similar append-style recording operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus alternatives like record_release_decision or update_work_item, and no prerequisites or caveats are stated. The agent must infer the usage context entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_release_decisionB
Record caller-supplied release-owner attestation; approval requires the QA evidence gate.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | Yes | ||
| decision | Yes | ||
| decided_by | Yes | ||
| environment | Yes | ||
| work_item_id | Yes | ||
| required_kinds | Yes | ||
| expected_revision | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose one real behavioral trait beyond the schema: approval decisions are gated on QA evidence. However, it omits mutation semantics, what happens on an expected_revision mismatch, and whether the recorded attestation is immutable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the precondition clause is placed after the core action. It is efficient, though arguably too terse for a seven-parameter mutation tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-required-parameter mutation tool with zero schema coverage, no annotations, and an output schema, the description should at minimum explain the decision/revision semantics and the gate precondition's enforcement. It supplies only the gate hint, leaving the calling contract largely undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Seven required parameters at 0% schema description coverage, and the description explains none of them. Terms like 'release-owner' and 'approval' only loosely gesture at decided_by and decision; work_item_id, expected_revision, environment, and required_kinds are entirely unaddressed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Record') and resource ('caller-supplied release-owner attestation'), which is meaningfully distinct from siblings like record_evidence and evaluate_qa_gate. It stops short of explicitly routing between those siblings, but the resource is identifiable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The clause 'approval requires the QA evidence gate' implies a precondition for approval decisions, but the description never states when to call this versus evaluate_qa_gate or record_evidence, nor whether the gate must be run first. Usage is implied rather than directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_work_itemC
Create a new work revision, optionally bound to the produced source SHA-256.
| Name | Required | Description | Default |
|---|---|---|---|
| role | Yes | ||
| spec | Yes | ||
| status | Yes | ||
| source_hash | No | ||
| work_item_id | Yes | ||
| expected_revision | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It usefully reveals that the operation creates a revision (implying history is preserved rather than destructive in-place mutation) and that source-hash binding is optional, but it says nothing about conflict behavior for expected_revision, permission requirements, or what happens to required fields omitted. That is a large gap for a five-required-parameter mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded sentence with no wasted wording. But brevity here is under-specification rather than economy — for a six-parameter mutating tool the one line is too sparse to be proportionate, though that is partly captured under contextual completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. However, with no annotations, 0% schema description coverage, and five required parameters, the description leaves the agent without the information needed to fill the required fields or predict conflict handling. It is not remotely adequate for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 6 parameters. The description explains only one of them, the optional source_hash, and even that only restates its binding target. work_item_id, expected_revision (presumably an optimistic-concurrency token), spec, status, and role are entirely undocumented in both the schema and the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description does convey the underlying semantics — an update is implemented as a new revision — which is genuinely informative. However, the verb 'Create a new work revision' sits awkwardly against the tool name update_work_item and reads confusingly close to the sibling create_work_item, with no explicit statement of what distinguishes the two. An agent could plausibly route to the wrong tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as create_work_item or handoff_work. The only hint resembling guidance is that source_hash is optional, which is about a parameter rather than selection between tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
8 tool updates
v0.1.0- First observed
create_work_item - First observed
evaluate_qa_gate - First observed
get_context - First observed
handoff_work - First observed
list_work_items - First observed
record_evidence - First observed
record_release_decision - First observed
update_work_item
TDQS
Scored across 8 tools
Each tool targets a distinct lifecycle action (list, get, create, update, handoff, record evidence, evaluate gate, record decision), and descriptions clarify the boundaries. However, 'get_context' is somewhat broad and could be confused with 'list_work_items' or overlaps with update/handoff in terms of reading revision state.
All tools follow the consistent verb_noun pattern (e.g., list_work_items, update_work_item, record_evidence), with predictable snake_case and clear action-oriented prefixes.
Eight tools are well-scoped for the domain of managing versioned work items, evidence, handoffs, and gated releases, with each tool earning its place without obvious redundancy.
The surface covers the core lifecycle from creation to release decision, including evidence and QA gates. However, it lacks explicit deletion or archival operations, and evidence retrieval is only implicit through get_context, which may limit some workflows.
Maintenance
Related MCP Connectors
Remote MCP for Kiro release readiness, evidence binders, signoff, and CI approval receipts.
Agent accountability for product teams: specs, evidence, and ship readiness over MCP.
Control plane for autonomous software labor. Agents claim objectives over MCP with audit trail.
Team docs served to AI agents over MCP - search, Markdown reads, version pinning, read audit.
Related MCP Servers
- AlicenseBqualityAmaintenanceHelps teams standardize implementation quality with project-aware rules, code review, health scoring, and an active agent workflow for intake, planning, verification, and release.16171 npmGPL 3.0

agileharnessofficial
AlicenseNot gradedqualityAmaintenanceEnables managing agile project boards with automated agent-driven workflows, enforcing stage gates and generating service and MCP client configurations.Apache 2.0- AlicenseBqualityBmaintenanceEnables MCP clients to drive developer workflows through APIs and CLIs, with explicit workspace or trusted-workstation launch modes, bounded command previews, multi-repository rules discovery, and an on-demand skills/recipes entry point. It lets agents review changes, run commands, and load only the smallest relevant rule or skill while reporting evidence and unverified steps.191Apache 2.0
- AlicenseAqualityBmaintenanceEnables managing software delivery from intake through stabilization via an evidence-gated hierarchical state machine, with tools for transitions, work items, blocking, resuming, and status rendering.19MIT