Skip to content

Style Lint

Style Lint checks text against the MN Manual of Style and returns graded violations with replacement guidance. Used internally by the content pipeline and available for external integrations that produce MN-adjacent content.

Endpoint: POST /v1/style/lint
Auth: API key (Bearer token)

Request

POST /v1/style/lint
Authorization: Bearer mnk_live_xxxxxxxxxxxxxxxxxxxxxx
Content-Type: application/json
{
"text": "This tool helps users understand their operational range and relational labor patterns."
}

Request fields

FieldTypeRequiredDescription
textstringYesPlain text or HTML to check. Max 40,000 characters. HTML tags are stripped before checking.

Response

{
"clean": false,
"violation_count": 2,
"violations": [
{
"mos_id": "MOS-014",
"term": "operational range",
"replacement": "what they can and can't do",
"severity": "high",
"sentence": "This tool helps users understand their operational range and relational labor patterns.",
"reason": "Framework jargon. Name the actual capability or limitation instead."
},
{
"mos_id": "MOS-022",
"term": "relational labor",
"replacement": "the work of staying connected to people",
"severity": "medium",
"sentence": "This tool helps users understand their operational range and relational labor patterns.",
"reason": "Abstract compound noun. Describe the actual work."
}
]
}

Response fields

FieldTypeDescription
cleanbooleantrue if no violations found
violation_countintegerTotal number of violations
violationsarrayList of violation objects (empty if clean)
violations[].mos_idstringMN Manual of Style rule identifier
violations[].termstringThe flagged term or phrase
violations[].replacementstringSuggested plain-language replacement
violations[].severitystring"high", "medium", or "low"
violations[].sentencestringThe sentence containing the violation
violations[].reasonstringExplanation of why the term is flagged

Clean response

When no violations are found:

{
"clean": true,
"violation_count": 0,
"violations": []
}

Getting an API key

API keys are issued per integration. Contact steven@multiplenatures.com with a brief description of your use case. Keys follow the format mnk_live_*.

Notes

  • The linter uses a two-pass approach: regex for known MOS violations, then a Claude verification pass to reduce false positives.
  • Long-form content (articles, book chapters) can be submitted in chunks up to 40KB.
  • The endpoint is also available as a drop-in Claude Code hook — see the Style Manual for setup.