WRITE

create_requirement_draft

Add a functional or non-functional requirement to a project as a draft a person reviews, with its statement, source, priority, measure and verification method.

Add a requirement to a project: a title, the kind (functional by default, or non_functional with the category the quality belongs to and a measure with the metric and the target), the statement in one testable sentence, the rationale, where it came from in words, a MoSCoW priority and how it will be shown to be met. The requirement takes the next number of its kind's sequence (CRM-FR-12, CRM-NFR-3), starts as a draft and writes its first version; requirement.created goes out.

A bounded write: it adds one draft and nothing else, so the person reviews it on the Requirements page before anyone builds against it. Write the statement in the client's words and in the shall form, one behaviour per requirement, and give a non-functional requirement a number it can be measured against; a quality without a target cannot be tested. A non-functional requirement without a category is refused.

Requires ability

The token behind the MCP session must hold it, or the call is refused with TOKEN_MISSING_ABILITY.

The REST endpoint and this tool share one action, so validation, permissions and events are identical.

Fires one event

Delivered to every endpoint subscribed to it once the change is made.

Arguments

project_id*string

UUID of the project the requirement belongs to.

title*string

What the requirement is called, 3 to 200 characters.

typestringoptional

The kind; functional by default.

functionalnon_functional
categorystringoptional

The quality a non-functional requirement is about; required for one.

performancescalabilityavailabilityreliabilitysecurityprivacyusabilityaccessibilitycompatibilitymaintainabilityportabilitycomplianceobservabilitylocalisationother
statementstringoptional

What the system shall do or keep, as HTML, in one testable sentence.

rationalestringoptional

Why, as HTML.

sourcestringoptional

Where it came from, in words: a meeting, a document, a stakeholder.

prioritystringoptional

Its MoSCoW priority; should by default.

mustshouldcouldwont
measurestringoptional

For a non-functional requirement, the metric and target that say when it is met, such as "p95 under 300 ms at 500 concurrent users".

verification_methodstringoptional

How it will be shown to be met; test by default.

testinspectionanalysisdemonstration

What it returns

{  "data": {    "id": "c4d5e6f7-a8b9-4c0d-9e1f-2a3b4c5d6e7f",    "project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13",    "type": "non_functional",    "number": 4,    "reference": "CRM-NFR-4",    "category": "accessibility",    "title": "Every screen meets WCAG 2.2 AA",    "statement": "<p>The system shall meet WCAG 2.2 level AA on every screen a member can reach.</p>",    "rationale": null,    "source_stakeholder_id": null,    "source_stakeholder_name": null,    "source": "Public sector procurement rules",    "priority": "must",    "measure": "Zero level A or AA failures in an automated audit of every route, plus a manual keyboard pass",    "verification_method": "inspection",    "status": "draft",    "owner_id": null,    "owner_name": null,    "position": 5,    "version": 0,    "approved_at": null,    "approved_revision_id": null,    "created_at": "2026-11-03T10:00:00+00:00",    "updated_at": "2026-11-03T10:00:00+00:00"  }}

How it fails

RESOURCE_NOT_FOUND

unknown project_id, or a project outside the token's scope or the person's visibility.

VALIDATION_FAILED

the title is missing or too long, a non-functional requirement has no category, or type, category, priority or verification_method is not one of its values.

TOKEN_MISSING_ABILITY

token lacks requirement:create.

FORBIDDEN

the token holder's role on the project does not carry requirement:create.

How is this guide?

Last updated on