ASD-STE100 Simplified Technical English
PYPI · BIZ-DFCH-ASDSTE100MCP · SCANNED SEP 20
An MCP server for the ASD-STE100 (Simplified Technical English) Issue 9 standard.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security99
- No malware found by supply-chain analysis.Pass
- A known CVE affects nltk, but no fixed version has been published, so there is nothing to upgrade to. View diagnostics → Partial
- Runs setuptools.build_meta at install time, a recognised native-build step with no shell scripting around it. View diagnostics → Pass
- 6 of 50 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency35
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- License check failed: no license is declared. See how to fix → Fail
- Actively maintained (last published 48 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability83
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 3113 tokens (~183/item across 17 items; 15 tools + 2 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management83
- Stability observed for 25 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 15 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 17 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
How do I install the ASD-STE100 Simplified Technical English MCP server?
ASD-STE100 Simplified Technical English runs locally as a PyPI package, launched with uvx biz-dfch-asdste100mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
pypi · biz-dfch-asdste100mcp
claude mcp add dfch-biz-dfch-asdste100mcp -- uvx biz-dfch-asdste100mcp
{
"mcpServers": {
"dfch-biz-dfch-asdste100mcp": {
"command": "uvx",
"args": [
"biz-dfch-asdste100mcp"
]
}
}
} {
"servers": {
"dfch-biz-dfch-asdste100mcp": {
"command": "uvx",
"args": [
"biz-dfch-asdste100mcp"
]
}
}
} codex mcp add dfch-biz-dfch-asdste100mcp -- uvx biz-dfch-asdste100mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"dfch-biz-dfch-asdste100mcp": {
"type": "local",
"command": [
"uvx",
"biz-dfch-asdste100mcp"
],
"enabled": true
}
}
} openclaw mcp add dfch-biz-dfch-asdste100mcp --command uvx --arg biz-dfch-asdste100mcp
mcp_servers:
dfch-biz-dfch-asdste100mcp:
command: "uvx"
args: ["biz-dfch-asdste100mcp"] {
"McpServers": {
"dfch-biz-dfch-asdste100mcp": {
"Transport": "stdio",
"Command": "uvx",
"Arguments": [
"biz-dfch-asdste100mcp"
]
}
}
} assistant mcp add dfch-biz-dfch-asdste100mcp -t stdio -c uvx -a biz-dfch-asdste100mcp
{
"mcpServers": {
"dfch-biz-dfch-asdste100mcp": {
"command": "uvx",
"args": [
"biz-dfch-asdste100mcp"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 19 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 77 to 80. That category is still filling its 30-day observation window: 23 days of observed history at the previous scan, 24 at this one. The score rises as the window fills, whether or not the server changes.
- 18 Sept 26 −4
- Stability: pass → 0.77 functional
- 17 Sept 26 +1
- Stability: 0.97 → pass security
- 15 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.
- 13 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
- 12 Sept 26 −3
- Stability: pass → 0.83 functional
- 11 Sept 26 +1
- Stability: 0.97 → pass security
- 9 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Analysed pypi/biz-dfch-asdste100mcp@3.0.0
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | pypi |
Background: How many MCP packages publish verified provenance →
Install scripts 1 script
| Hook | Tier | Command |
|---|---|---|
| build_backend | allowlisted | setuptools.build_meta |
Background: Why install scripts are a supply-chain risk →
Vulnerabilities 1 finding
| ID | CVE | Severity | Vector | Fix available |
|---|---|---|---|---|
| GHSA-8mgp-746c-j5xp | CVE-2026-81726 | high | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:L/A:L | no |
Background: What a vulnerability scan can and cannot prove →
Dependencies 50 packages
| Packages resolved | 50 |
|---|---|
| Stale | 5 |
| No linked repository | 1 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
rules_by_category ~104
Search for rules in the ruleset by exact category name (case-insensitive). Use `rules_toc` first if you do not know the exact category names. Parameters ---------- category: The category name to search for, e.g. ``"Technical nouns"``. Returns ------- list[Rule] A (possibly empty) list of matching rules.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | yes | The exact category name to search for, e.g. 'Technical nouns'. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | array | yes | – |
No examples provided.
rules_by_section ~102
Search for rules in the ruleset by exact section name (case-insensitive). Use `rules_toc` first if you do not know the exact section names. Parameters ---------- section: The section name to search for, e.g. ``"Words"``. Returns ------- list[Rule] A (possibly empty) list of matching rules.
| Name | Type | Req | Description |
|---|---|---|---|
| section | string | yes | The exact section name to search for, e.g. 'Words'. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | array | yes | – |
No examples provided.
rules_examples ~369
Return content items across rules, optionally scoped and filtered. Parameters ---------- id_: When given, only consider the rule with this exact id (case-insensitive). section: When given, only consider rules in this exact section (case-insensitive). category: When given, only consider rules in this exact category (case-insensitive). kind: When given, only return content items of this type (e.g. ``"ste_example"``). max_results: The maximum number of matching content items to return (default 25). offset: The number of matching content items to skip before returning results, for pagination (default 0). Returns ------- RulesExamplesResult ``results`` holds the (possibly empty) page of matching content items, in document order, after applying ``offset`` and ``max_results``. ``total`` is the full match count before pagination, and ``truncated`` tells the caller whether more content items exist beyond this page. Unfiltered, the ruleset can hold well over a thousand content items, so pagination matters here even though the ruleset itself only has a few dozen rules.
| Name | Type | Req | Description |
|---|---|---|---|
| category | – | – | Only consider rules in this exact category (case-insensitive). |
| id_ | – | – | Only consider the rule with this exact id (case-insensitive). |
| kind | – | – | Only return content items of this exact type, e.g. 'ste_example'. |
| max_results | integer | – | The maximum number of matching entries to return. |
| offset | integer | – | The number of matching entries to skip before returning results, for pagination. |
| section | – | – | Only consider rules in this exact section (case-insensitive). |
| Name | Type | Req | Description |
|---|---|---|---|
| max_results | integer | yes | – |
| offset | integer | yes | – |
| results | array | – | – |
| total | integer | yes | – |
| truncated | boolean | yes | – |
No examples provided.
rules_find ~154
Search for rules in the ruleset by exact id. Use this first when you know the exact rule/recommendation id. Use `rules_match` or `rules_search` if this tool returns no items. Parameters ---------- id_: The rule/recommendation id to search for (e.g. ``"R1.1"`` or ``"GR-8"``), matched case-insensitively. Returns ------- list[Rule] A (possibly empty) list of matching rules.
| Name | Type | Req | Description |
|---|---|---|---|
| id_ | string | yes | The exact rule/recommendation id to search for, e.g. 'R1.1' or 'GR-8' (case-insensitive). |
| Name | Type | Req | Description |
|---|---|---|---|
| result | array | yes | – |
No examples provided.
rules_match ~133
Search for rules in the ruleset using a regular expression. The pattern is matched (case-insensitively) against both the ``name`` and the ``summary`` of each rule. Use `rules_search` instead if you need to search the full content of every rule (notes, examples, technical noun/verb lists, ...). Parameters ---------- pattern: The regular expression pattern to search for. Returns ------- list[Rule] A (possibly empty) list of matching rules.
| Name | Type | Req | Description |
|---|---|---|---|
| pattern | string | yes | A regular-expression pattern matched against the rule name and summary (case-insensitive). |
| Name | Type | Req | Description |
|---|---|---|---|
| result | array | yes | – |
No examples provided.
rules_overview ~310
Return a lightweight, per-rule overview of the ruleset. Use this for a cheap, low-token summary of what rules exist before drilling into `rules_find` or `rules_examples` for a specific rule; each result carries only the rule's id, type, section, category, name, and (optionally) summary, plus counts/flags about its content items rather than the content items themselves. Parameters ---------- section: When given, only consider rules in this exact section (case-insensitive). category: When given, only consider rules in this exact category (case-insensitive). type_: When given, only consider rules of this exact type (e.g. ``"rule"``, to exclude recommendations and informational blocks). brief: When ``True`` (default), omit the summary to keep the payload small. When ``False``, include the full summary. Returns ------- list[RuleOverview] One overview per matching rule, in the ruleset's current order (natural id order by default).
| Name | Type | Req | Description |
|---|---|---|---|
| brief | boolean | – | When true (default), omit the summary to keep the payload small. |
| category | – | – | Only consider rules in this exact category (case-insensitive). |
| section | – | – | Only consider rules in this exact section (case-insensitive). |
| type_ | – | – | Only consider entries of this exact type, e.g. 'rule' (excludes recommendations and information blocks). |
| Name | Type | Req | Description |
|---|---|---|---|
| result | array | yes | – |
No examples provided.
rules_search ~476
Full-text search for rules using a regular expression. Unlike `rules_match`, which only looks at ``name`` and ``summary``, this searches every text a rule carries: ``section``, ``category``, ``name``, ``summary``, and the ``data`` of every content item -- i.e. explanatory text, notes, STE/non-STE examples, technical noun/verb lists, and so on. Useful for finding "what rule governs passive voice" or "where does STE100 mention abbreviations", without knowing the section/category/id upfront. Parameters ---------- pattern: The regular expression pattern to search for (case-insensitive). content_types: When given, only the ``data`` of content items whose type is in this list is searched (``section``, ``category``, ``name``, and ``summary`` are always searched regardless). Use this to narrow the search to, e.g., only ``note`` or ``ste_example`` content. max_results: The maximum number of matching rules to return (default 25). offset: The number of matching rules to skip before returning results, for pagination (default 0). Returns ------- SearchResult ``results`` holds the (possibly empty) page of matching rules, in document order, after applying ``offset`` and ``max_results``. ``total`` is the full match count before pagination, and ``truncated`` tells the caller whether more matches exist beyond this page -- i.e. whether a reached ``max_results`` means "that's all of them" or "call again with a higher ``offset``".
| Name | Type | Req | Description |
|---|---|---|---|
| content_types | – | – | Only search the content of these types, e.g. ['note', 'ste_example']. The rule section/category/name/summary are always searched regardless of this option. |
| max_results | integer | – | The maximum number of matching entries to return. |
| offset | integer | – | The number of matching entries to skip before returning results, for pagination. |
| pattern | string | yes | A regular-expression pattern (case-insensitive) matched against the rule section, category, name, summary, and every content block (text, notes, examples, technical noun/verb lists, ...). |
| Name | Type | Req | Description |
|---|---|---|---|
| max_results | integer | yes | – |
| offset | integer | yes | – |
| results | array | – | – |
| total | integer | yes | – |
| truncated | boolean | yes | – |
No examples provided.
rules_toc ~179
Return the distinct (section, category) pairs, in first-seen order. Gives a table-of-contents style outline of the ruleset's structure, without any per-rule detail; useful to see which sections and categories exist before drilling into `rules_overview`, `rules_by_section`, or `rules_by_category` for a specific one. Parameters ---------- section: When given, only consider rules in this exact section (case-insensitive). Returns ------- list[TocEntry] One entry per distinct (section, category) pair, in first-seen document order, where ``ids`` lists the ids of every rule/recommendation/information item in that (section, category), in document order.
| Name | Type | Req | Description |
|---|---|---|---|
| section | – | – | Only consider rules in this exact section (case-insensitive). |
| Name | Type | Req | Description |
|---|---|---|---|
| result | array | yes | – |
No examples provided.
word_count ~47
Return the total number of entries in the vocabulary. Use instead of `word_list` when you only need the count. Returns ------- int The number of entries in the vocabulary.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | integer | yes | – |
No examples provided.
word_find ~123
Search for a term by exact name (case-insensitive) in the ASD-STE100 Issue 9 vocabulary. Return approved/rejected status, part of speech, STE examples, and approved alternatives. Use this first when you know the exact word. Use `word_match` with a wildcard if this tool returns no items. Parameters ---------- term: The word or phrase to look up exactly. Returns ------- list[Word] A (possibly empty) list of matching vocabulary entries.
| Name | Type | Req | Description |
|---|---|---|---|
| term | string | yes | The term to look up. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | array | yes | – |
No examples provided.
word_find_many ~186
Search for multiple terms by exact name (case-insensitive) in the ASD-STE100 Issue 9 vocabulary in a single call. Equivalent to calling `word_find` once per term, but avoids one tool round-trip per term. Each input term gets its own entry in the result, holding 0, 1, or more matching vocabulary entries — an unknown or misspelled term simply yields an empty `results` list for that entry rather than shrinking the overall result. Parameters ---------- terms: The words or phrases to look up exactly. Returns ------- list[WordFindEntry] One entry per input term, in the same order as `terms`, each holding the term and its (possibly empty) list of matching vocabulary entries.
| Name | Type | Req | Description |
|---|---|---|---|
| terms | array | yes | The list of terms to look up exactly. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | array | yes | – |
No examples provided.
word_fuzzy ~91
Search for a term with sequence-matching (Python difflib.get_close_matches). Results may not be obvious — use when find returns nothing and you want suggestions. Parameters ---------- term: The word or phrase to search for approximately. Returns ------- list[Word] A (possibly empty) list of similar vocabulary entries.
| Name | Type | Req | Description |
|---|---|---|---|
| term | string | yes | The term to look up. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | array | yes | – |
No examples provided.
word_list ~199
Return all vocabulary entries. Only use when you need to process the full vocabulary. Use word_count instead if you only need the total. This operation is expensive and returns a large number of entries -- the vocabulary holds thousands of them. Parameters ---------- max_results: The maximum number of vocabulary entries to return (default 25). offset: The number of vocabulary entries to skip before returning results, for pagination (default 0). Returns ------- WordResult ``results`` holds the (possibly empty) page of vocabulary entries after applying ``offset`` and ``max_results``. ``total`` is the full entry count before pagination, and ``truncated`` tells the caller whether more entries exist beyond this page.
| Name | Type | Req | Description |
|---|---|---|---|
| max_results | integer | – | The maximum number of matching entries to return. |
| offset | integer | – | The number of matching entries to skip before returning results, for pagination. |
| Name | Type | Req | Description |
|---|---|---|---|
| max_results | integer | yes | – |
| offset | integer | yes | – |
| results | array | – | – |
| total | integer | yes | – |
| truncated | boolean | yes | – |
No examples provided.
word_match ~247
Search the vocabulary using a regular expression pattern. Return all entries whose term matches. Use it to find all words with a common prefix or pattern (e.g. ^de or .*tion$). A broad pattern can match a large part of the vocabulary, so results are paginated. Parameters ---------- term: A regular-expression pattern (e.g. ``"util.*"``). max_results: The maximum number of matching vocabulary entries to return (default 25). offset: The number of matching vocabulary entries to skip before returning results, for pagination (default 0). Returns ------- WordResult ``results`` holds the (possibly empty) page of matching vocabulary entries after applying ``offset`` and ``max_results``. ``total`` is the full match count before pagination, and ``truncated`` tells the caller whether more matches exist beyond this page.
| Name | Type | Req | Description |
|---|---|---|---|
| max_results | integer | – | The maximum number of matching entries to return. |
| offset | integer | – | The number of matching entries to skip before returning results, for pagination. |
| term | string | yes | The term to look up. |
| Name | Type | Req | Description |
|---|---|---|---|
| max_results | integer | yes | – |
| offset | integer | yes | – |
| results | array | – | – |
| total | integer | yes | – |
| truncated | boolean | yes | – |
No examples provided.
word_synonym ~212
Search for vocabulary entries that are WordNet synonyms of a word (via the `biz-dfch-asdste100nlp` library's `Nlp` class). Every WordNet synset for `term` is collected and its lemma names are cross-referenced, case-insensitively, against the vocabulary's entries by name — the same scope as `word_find`/`word_match`/`word_fuzzy` (approved and rejected entries both included). `term` itself is excluded from the result. Use this to find approved alternatives for a non-STE word. Parameters ---------- term: The word to search synonyms for. Returns ------- list[Word] A deduplicated, alphabetically sorted list of matching vocabulary entries. Empty if `term` has no WordNet synsets (out-of- vocabulary) or none of its synonyms are present in the vocabulary.
| Name | Type | Req | Description |
|---|---|---|---|
| term | string | yes | The term to look up. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | array | yes | – |
No examples provided.
What is the ASD-STE100 Simplified Technical English MCP server?
ASD-STE100 Simplified Technical English is an MCP server listed in the public MCP registry as io.github.dfch/biz-dfch-asdste100mcp. An MCP server for the ASD-STE100 (Simplified Technical English) Issue 9 standard. This page covers its PyPI package (biz-dfch-asdste100mcp).
Is the ASD-STE100 Simplified Technical English MCP server safe to use?
ASD-STE100 Simplified Technical English scores 81 out of 100 on VerifyMCP. We recorded 1 known advisory against it as of 20 September 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the ASD-STE100 Simplified Technical English MCP server expose?
ASD-STE100 Simplified Technical English exposes 15 tools: rules_by_category, rules_by_section, rules_examples, rules_find, rules_match, and 10 more. Their descriptions and schemas cost roughly 2,932 tokens of context every time the server is loaded.
Is the ASD-STE100 Simplified Technical English MCP server still maintained?
ASD-STE100 Simplified Technical English is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.