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/lintAuthorization: Bearer mnk_live_xxxxxxxxxxxxxxxxxxxxxxContent-Type: application/json{ "text": "This tool helps users understand their operational range and relational labor patterns."}Request fields
| Field | Type | Required | Description |
|---|---|---|---|
text | string | Yes | Plain 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
| Field | Type | Description |
|---|---|---|
clean | boolean | true if no violations found |
violation_count | integer | Total number of violations |
violations | array | List of violation objects (empty if clean) |
violations[].mos_id | string | MN Manual of Style rule identifier |
violations[].term | string | The flagged term or phrase |
violations[].replacement | string | Suggested plain-language replacement |
violations[].severity | string | "high", "medium", or "low" |
violations[].sentence | string | The sentence containing the violation |
violations[].reason | string | Explanation 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.