MSB Writing Studio

Write faster, stay compliant, and publish with confidence

MY-STE-BUDDY helps technical teams reduce review cycles, enforce Simplified Technical English standards, and deliver clear documentation at scale. Validate long drafts in seconds with precise, rule-based guidance.

New: each registered user can now upload and manage personal custom STE word lists and alternatives, so compliance checks can match team-specific terminology.

No setup friction · Enterprise-ready security · Fast onboarding support

  • Dictionary and rule-aware STE validation
  • Clear fixes mapped to compliance issues
  • Built for individual writers and global teams

Trusted by technical writing teams across aerospace, medical equipment, energy, and industrial engineering

  • High Availability
  • GDPR-Compliant
  • EU-Based Infrastructure

POWERED BY INDUSTRY STANDARDS

Built on OpenSTE and ASD-STE100 Foundations

MSB Writing Studio combines community-backed language resources and official Simplified Technical English guidance to deliver practical, trustworthy compliance workflows.

Community + Standard = Reliable Compliance

OPEN SOURCE STANDARD FOR TECHNICAL DOCUMENTATION

openste.org

OpenSTE provides transparent reference material and vocabulary insights that help teams align terminology decisions quickly.

Visit openste.org

OFFICIAL STANDARD FOR TECHNICAL DOCUMENTATION

asd-ste100.org

ASD-STE100 guidance anchors writing quality with globally recognized rules for clarity, consistency, and maintainability.

Visit asd-ste100.org

MSB Writing Studio PREVIEW

See full-document insights in a single analysis workspace

Review metrics, rule findings, and sentence-by-sentence guidance in one continuous interface. The live preview below auto-scrolls through the analyzer view.

MSB Writing Studio analyzer interface preview

WHY HIGH-PERFORMING TEAMS CHOOSE US

Engineered for precision, reliability, and operational scale

Precision

Advanced Compliance Analysis

Evaluate terminology, sentence structure, and writing patterns against ASD-STE100 requirements in one pass.

Security

Enterprise-Ready Security

Protect sensitive documentation with secure processing, strict controls, and a privacy-first architecture for regulated environments.

Visibility

Actionable Quality Reporting

Provide teams and stakeholders with clear compliance scores, issue breakdowns, and measurable progress over time.

MEASURABLE BUSINESS IMPACT

Improve documentation quality while reducing review workload

80%

Average reduction in manual compliance review effort

2.5 Hours

Efficiency Optimization Per document (600 words)

10,000+ Words

Enterprise-Scale Analysis Capacity

99.2%

Validation accuracy for rule-driven compliance checks

FROM DRAFT TO RELEASE-READY

How teams use MY-STE-BUDDY in 3 steps

1

Submit your technical draft

Paste procedures, maintenance tasks, or operational instructions without preprocessing.

2

Run automated validation

The STE Compliance Checker checks ASD-STE100 rules and flags non-compliant language with clear rationale.

3

Apply guided corrections

Resolve issues quickly with actionable suggestions and publish consistent, compliant content.

DEVELOPER API

Embed compliance validation into your existing stack

Integrate STE compliance checks into CMS workflows, CI/CD quality gates, and internal authoring applications through a clean REST API.

  • RESTful JSON endpoints with predictable schemas
  • Low-latency responses for real-time checks
  • Scalable throughput for enterprise documentation teams

Current API URL: https://api.my-ste-buddy.com/api/v1/nlp/analyse

curl -X POST https://api.my-ste-buddy.com/api/v1/nlp/analyse \
  -H "Content-Type: application/json" \
  -d '{"sentence":"Make sure that the valve is open."}'
Get API Credentials
How to use custom STE word lists with the API (step-by-step)

Base URL: https://api.my-ste-buddy.com/api/v1

Custom STE sets are user-specific. Always send a stable user identity header (x-user-id recommended) together with your auth headers.

1) Send required headers

  • x-user-id: user identifier that owns the custom set
  • x-user-email and x-api-key: required when API auth is enabled
  • Content-Type: application/json for POST requests

2) Validate your custom set JSON first

curl -X POST https://api.my-ste-buddy.com/api/v1/custom-sets/validate \
    -H "Content-Type: application/json" \
    -H "x-user-id: user-123" \
    -H "x-user-email: you@company.com" \
    -H "x-api-key: <api-key>" \
    -d '{
        "set_name": "Engine Program Terms",
        "description": "Program-specific STE terminology",
        "words": [
            {
                "title": "depressurize",
                "plural": "",
                "wordstatus": "approved",
                "spacypos": "VERB",
                "appmeaning": "remove pressure from a system"
            },
            {
                "title": "utilize",
                "plural": "",
                "wordstatus": "unapproved",
                "spacypos": "VERB",
                "appmeaning": "legacy wording"
            }
        ],
        "alternatives": [
            {
                "title": "utilize",
                "plural": "",
                "alt_title": "use"
            }
        ]
    }'

If valid=true, continue to upload. If not, fix errors and re-validate.

3) Upload and activate a set

curl -X POST https://api.my-ste-buddy.com/api/v1/custom-sets/upload \
    -H "Content-Type: application/json" \
    -H "x-user-id: user-123" \
    -H "x-user-email: you@company.com" \
    -H "x-api-key: <api-key>" \
    -d '{
        "set_name": "Engine Program Terms",
        "description": "Program-specific STE terminology",
        "words": [ ... ],
        "alternatives": [ ... ],
        "activate": true
    }'

4) List, switch, and reset sets

# List all sets for the user
curl -X GET https://api.my-ste-buddy.com/api/v1/custom-sets \
    -H "x-user-id: user-123" \
    -H "x-user-email: you@company.com" \
    -H "x-api-key: <api-key>"

# Activate a specific set (replace <set_id>)
curl -X POST https://api.my-ste-buddy.com/api/v1/custom-sets/<set_id>/activate \
    -H "Content-Type: application/json" \
    -H "x-user-id: user-123" \
    -H "x-user-email: you@company.com" \
    -H "x-api-key: <api-key>" \
    -d '{}'

# Switch back to default ASD-STE100 behavior
curl -X POST https://api.my-ste-buddy.com/api/v1/custom-sets/use-default \
    -H "Content-Type: application/json" \
    -H "x-user-id: user-123" \
    -H "x-user-email: you@company.com" \
    -H "x-api-key: <api-key>" \
    -d '{}'

5) Analyze text using the active set

Call /nlp/analyse with the same user headers. The API automatically applies the currently active set for that user.

curl -X POST https://api.my-ste-buddy.com/api/v1/nlp/analyse \
    -H "Content-Type: application/json" \
    -H "x-user-id: user-123" \
    -H "x-user-email: you@company.com" \
    -H "x-api-key: <api-key>" \
    -d '{"sentence":"Do not utilize this tool in operation."}'

Response includes custom_set_active so clients can detect whether custom-list mode was applied.

Important limits and validation rules

  • Maximum 5 custom sets per registered user
  • Unknown fields are rejected (strict schema)
  • Alternative source terms must exist in the words list
  • Use the same x-user-id for upload and analyze to get consistent behavior
Show full response payload
API Response (200 OK)
Content-Type: application/json

{
    "sentence": "Hello this is my life I am working on!",
    "word_count": 9,
    "character_count": 30,
    "punctuation_count": 1,
    "passive": false,
    "parenthetical_sentence_word_counts": [
        []
    ],
    "noun_clusters": [],
    "words": [
        {
            "index": 1,
            "word": "Hello",
            "lemma": "hello",
            "approved": "na",
            "alternatives": [],
            "pos": "INTJ",
            "pos_detailed": "UH",
            "pos_explanation": "interjection",
            "pos_detailed_explanation": "interjection",
            "meaning": "",
            "spelling_variant": {
                "variant": "not_applicable",
                "in_us_dict": false,
                "in_gb_dict": false,
                "explanation": "'Hello' POS 'INTJ' is excluded from spelling-variant analysis.",
                "us_equivalent": "",
                "is_incorrect": false,
                "alternative_spellings": []
            }
        },
        {
            "index": 2,
            "word": "this",
            "lemma": "this",
            "approved": "true",
            "alternatives": [],
            "pos": "PRON",
            "pos_detailed": "DT",
            "pos_explanation": "pronoun",
            "pos_detailed_explanation": "determiner",
            "meaning": "",
            "spelling_variant": {
                "variant": "not_applicable",
                "in_us_dict": false,
                "in_gb_dict": false,
                "explanation": "'this' POS 'PRON' is excluded from spelling-variant analysis.",
                "us_equivalent": "",
                "is_incorrect": false,
                "alternative_spellings": []
            }
        },
        {
            "index": 3,
            "word": "is",
            "lemma": "be",
            "approved": "true",
            "alternatives": [],
            "pos": "AUX",
            "pos_detailed": "VBZ",
            "pos_explanation": "auxiliary",
            "pos_detailed_explanation": "verb, 3rd person singular present",
            "meaning": "have the quality of being; (copula, used with an adjective or a predicate noun)",
            "spelling_variant": {
                "variant": "not_applicable",
                "in_us_dict": false,
                "in_gb_dict": false,
                "explanation": "'is' POS 'AUX' is excluded from spelling-variant analysis.",
                "us_equivalent": "",
                "is_incorrect": false,
                "alternative_spellings": []
            }
        },
        {
            "index": 4,
            "word": "my",
            "lemma": "my",
            "approved": "na",
            "alternatives": [],
            "pos": "PRON",
            "pos_detailed": "PRP$",
            "pos_explanation": "pronoun",
            "pos_detailed_explanation": "pronoun, possessive",
            "meaning": "",
            "spelling_variant": {
                "variant": "not_applicable",
                "in_us_dict": false,
                "in_gb_dict": false,
                "explanation": "'my' POS 'PRON' is excluded from spelling-variant analysis.",
                "us_equivalent": "",
                "is_incorrect": false,
                "alternative_spellings": []
            }
        },
        {
            "index": 5,
            "word": "life",
            "lemma": "life",
            "approved": "true",
            "alternatives": [],
            "pos": "NOUN",
            "pos_detailed": "NN",
            "pos_explanation": "noun",
            "pos_detailed_explanation": "noun, singular or mass",
            "meaning": "a characteristic state or mode of living",
            "spelling_variant": {
                "variant": "both",
                "in_us_dict": true,
                "in_gb_dict": true,
                "explanation": "'life' is valid in both US English and GB English.",
                "us_equivalent": "",
                "is_incorrect": false,
                "alternative_spellings": []
            }
        },
        {
            "index": 6,
            "word": "I",
            "lemma": "I",
            "approved": "na",
            "alternatives": [],
            "pos": "PRON",
            "pos_detailed": "PRP",
            "pos_explanation": "pronoun",
            "pos_detailed_explanation": "pronoun, personal",
            "meaning": "",
            "spelling_variant": {
                "variant": "not_applicable",
                "in_us_dict": false,
                "in_gb_dict": false,
                "explanation": "'I' POS 'PRON' is excluded from spelling-variant analysis.",
                "us_equivalent": "",
                "is_incorrect": false,
                "alternative_spellings": []
            }
        },
        {
            "index": 7,
            "word": "am",
            "lemma": "be",
            "approved": "true",
            "alternatives": [],
            "pos": "AUX",
            "pos_detailed": "VBP",
            "pos_explanation": "auxiliary",
            "pos_detailed_explanation": "verb, non-3rd person singular present",
            "meaning": "have the quality of being; (copula, used with an adjective or a predicate noun)",
            "spelling_variant": {
                "variant": "not_applicable",
                "in_us_dict": false,
                "in_gb_dict": false,
                "explanation": "'am' POS 'AUX' is excluded from spelling-variant analysis.",
                "us_equivalent": "",
                "is_incorrect": false,
                "alternative_spellings": []
            }
        },
        {
            "index": 8,
            "word": "working",
            "lemma": "work",
            "approved": "true",
            "alternatives": [],
            "pos": "VERB",
            "pos_detailed": "VBG",
            "pos_explanation": "verb",
            "pos_detailed_explanation": "verb, gerund or present participle",
            "meaning": "exert oneself by doing mental or physical work for a purpose or out of necessity",
            "spelling_variant": {
                "variant": "both",
                "in_us_dict": true,
                "in_gb_dict": true,
                "explanation": "'working' is valid in both US English and GB English.",
                "us_equivalent": "",
                "is_incorrect": false,
                "alternative_spellings": []
            }
        },
        {
            "index": 9,
            "word": "on",
            "lemma": "on",
            "approved": "true",
            "alternatives": [],
            "pos": "ADP",
            "pos_detailed": "IN",
            "pos_explanation": "adposition",
            "pos_detailed_explanation": "conjunction, subordinating or preposition",
            "meaning": "",
            "spelling_variant": {
                "variant": "not_applicable",
                "in_us_dict": false,
                "in_gb_dict": false,
                "explanation": "'on' POS 'ADP' is excluded from spelling-variant analysis.",
                "us_equivalent": "",
                "is_incorrect": false,
                "alternative_spellings": []
            }
        },
        {
            "index": 10,
            "word": "!",
            "lemma": "!",
            "approved": "na",
            "alternatives": [],
            "pos": "PUNCT",
            "pos_detailed": ".",
            "pos_explanation": "punctuation",
            "pos_detailed_explanation": "punctuation mark, sentence closer",
            "meaning": "",
            "spelling_variant": {
                "variant": "not_applicable",
                "in_us_dict": false,
                "in_gb_dict": false,
                "explanation": "'!' POS 'PUNCT' is excluded from spelling-variant analysis.",
                "us_equivalent": "",
                "is_incorrect": false,
                "alternative_spellings": []
            }
        }
    ],
    "asd_ste100": {
        "rules": {
            "rule_3_2": {
                "violated": true,
                "violation_count": 1,
                "violations": [
                    {
                        "word": "working",
                        "lemma": "work",
                        "pos": "VERB",
                        "pos_detailed": "VBG",
                        "reason": "Gerund/progressive form is not allowed by ASD-STE100 Rule 3.2.",
                        "suggestion": ""
                    }
                ]
            },
            "rule_3_3": {
                "violated": false,
                "violation_count": 0,
                "violations": []
            },
            "rule_3_4": {
                "violated": false,
                "violation_count": 0,
                "violations": []
            },
            "rule_3_5": {
                "violated": true,
                "violation_count": 1,
                "violations": [
                    {
                        "word": "working",
                        "lemma": "work",
                        "pos": "VERB",
                        "pos_detailed": "VBG",
                        "reason": "Rule 3.5 violation: non-approved '-ing' verb form used outside allowed technical noun usage.",
                        "suggestion": "Use an approved simple tense (for example 'work') or rewrite as a technical noun phrase."
                    }
                ]
            },
            "rule_3_7": {
                "violated": true,
                "violation_count": 1,
                "violations": [
                    {
                        "word": "working",
                        "lemma": "work",
                        "pos": "VERB",
                        "pos_detailed": "VBG",
                        "reason": "Rule 3.7 violation: verb is not approved as a verb in STE dictionary.",
                        "suggestion": "Use an approved verb alternative or rewrite with a clear approved action verb instead of 'working'."
                    }
                ]
            },
            "rule_4_1": {
                "violated": false,
                "violation_count": 0,
                "violations": []
            },
            "rule_4_5": {
                "violated": false,
                "violation_count": 0,
                "violations": []
            },
            "rule_5_1": {
                "violated": false,
                "violation_count": 0,
                "violations": []
            },
            "rule_5_2": {
                "violated": false,
                "violation_count": 0,
                "violations": []
            },
            "rule_5_3": {
                "violated": true,
                "violation_count": 1,
                "violations": [
                    {
                        "sentence": "Hello this is my life I am working on!",
                        "reason": "Rule 5.3 violation: instruction is not written in imperative (command) form.",
                        "suggestion": "Rewrite the instruction with a base-form command verb (for example, 'Continue the test.')."
                    }
                ]
            },
            "rule_5_5": {
                "violated": false,
                "violation_count": 0,
                "violations": []
            },
            "rule_6_3": {
                "violated": false,
                "violation_count": 0,
                "violations": []
            },
            "rule_7_1": {
                "violated": false,
                "violation_count": 0,
                "violations": []
            },
            "rule_8_1": {
                "violated": false,
                "violation_count": 0,
                "violations": []
            },
            "rule_8_5": {
                "violated": false,
                "violation_count": 0,
                "sentence_counts": [],
                "violations": []
            }
        },
        "general_recommendations": {
            "gr_1": {
                "violated": false,
                "violation_count": 0,
                "violations": []
            },
            "gr_2": {
                "violated": false,
                "violation_count": 0,
                "violations": []
            }
        }
    }
}
Minimal Response
{
    "sentence": "Hello this is my life I am working on!",
    "word_count": 9,
    "passive": false,
    "asd_ste100": {
        "rules": {
            "rule_3_2": { "violated": true, "violation_count": 1 },
            "rule_3_5": { "violated": true, "violation_count": 1 },
            "rule_3_7": { "violated": true, "violation_count": 1 },
            "rule_5_3": { "violated": true, "violation_count": 1 }
        }
    }
}

GET STARTED

Modernize your documentation workflow with confident compliance

Share your current process and our team will help you deploy a practical STE compliance rollout.

  • Free access after registration
  • Secure account and API token management
  • Fast onboarding for technical writing teams

Create your account

Start using the web app and API immediately after email verification.

Password must be at least 10 characters and include at least 2 uppercase letters and 2 symbols.

Protected by native CAPTCHA, rate limiting, and encrypted password storage.

Need another verification email?

SEND US A MESSAGE

Contact our team

Have a question, need support, or want to discuss onboarding? Send us a message and we will get back to you.

Send us a message

ACCOUNT ACCESS

Sign in to your MY-STE-BUDDY account

Access your verified account to continue with compliance workflows and STE Compliance Checker tools.