WRITE

propose_business_rule

Add a business rule to a project as a draft a person reviews, with its kind, statement, condition and action, exceptions, worked examples, authority and priority.

Add a business rule to a project: a name, the kind (constraint by default), the rule in plain words, when it applies and what follows, the exceptions, worked examples of an input and what is expected, who or what its authority is, and a MoSCoW priority. The rule takes the next number of the rules' sequence (CRM-BR-7), starts as a draft and writes its first version; business_rule.created goes out.

A bounded write: it adds one draft and nothing else, so the person reviews it on the Business Rules page before anyone codes against it. Propose a rule when a story, a requirement or a conversation states a decision of the business that nothing records yet; write it so a developer can code it and a tester can check it, and give at least one worked example, because a rule without an example is argued about and a rule with three is tested.

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 rule belongs to.

name*string

What the rule is called, 3 to 200 characters.

typestringoptional

The kind; constraint by default.

constraintderivationcomputationinferenceaction_enablerpolicy
statementstringoptional

The rule in plain words, as HTML, as the business would say it.

conditionstringoptional

When the rule applies, in one line, as in "When a member's annual spend crosses the platinum threshold".

actionstringoptional

What follows when it does, in one line, as in "then the member moves to the platinum tier on the first of the next month".

exceptionsstringoptional

When the rule does not apply, as HTML.

examplesobject[]optional

Worked examples, up to twenty rows, each with an `input` (required) and what is `expected`.

input*string

The input, up to 500 characters.

expectedstringoptional

What the rule gives for it, up to 500 characters.

authoritystringoptional

Who or what decides the rule, in words: a role, a policy, a regulation.

prioritystringoptional

Its MoSCoW priority; should by default.

mustshouldcouldwont

What it returns

{  "data": {    "id": "d5e6f7a8-b9c0-4d1e-8f2a-3b4c5d6e7f80",    "project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13",    "number": 8,    "reference": "CRM-BR-8",    "name": "Refunds within thirty days",    "type": "constraint",    "statement": "<p>A member may return an order for a refund within thirty days of delivery.</p>",    "condition": "When a return is requested",    "action": "then it is accepted only if fewer than thirty days have passed since delivery",    "exceptions": "<p>Perishable goods are not returnable.</p>",    "examples": [      {        "input": "Delivered 1 March, return requested 30 March",        "expected": "Accepted"      },      {        "input": "Delivered 1 March, return requested 1 April",        "expected": "Refused"      }    ],    "authority_stakeholder_id": null,    "authority_stakeholder_name": null,    "authority": "Consumer protection regulations",    "priority": "must",    "effective_from": null,    "effective_to": null,    "status": "draft",    "owner_id": null,    "owner_name": null,    "position": 7,    "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 name is missing or too long, an example has no input, or type or priority is not one of its values.

TOKEN_MISSING_ABILITY

token lacks business-rule:create.

FORBIDDEN

the token holder's role on the project does not carry business-rule:create.

How is this guide?

Last updated on