Skip to main content
Glama
dfch

io.github.dfch/biz-dfch-asdste100mcp

Official
by dfch

biz.dfch.AsdSte100Mcp

ASD-STE100: Issue 9 License: AGPL v3 Python Lint and Test TestPyPI version PyPI version PyPI downloads MCP Registry Auth: none

An MCP server for the ASD-STE100 (Simplified Technical English) Issue 9 standard.

ASD-STE100: Copyright by (c) ASD.

I am in no way affiliated with ASD. ASD does not endorse my work.

Table of Contents

Related MCP server: mcp-docmost

Authentication

This server exposes only read-only lookup tools and resources over vocabulary and rules data that is bundled with the package; there is nothing to authenticate against. No API keys, tokens, or credentials are required or supported in either stdio or sse transport mode. If you expose the sse transport beyond localhost, secure it at the network layer (e.g. a reverse proxy) rather than expecting the server to authenticate requests itself.

Tools

Vocabulary

Tool

Description

word_find

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.

word_find_many

Search for multiple terms by exact name (case-insensitive) in a single call. Returns one WordFindEntry per input term (term + results), in the same order as the input, each holding 0, 1, or more matching vocabulary entries.

word_match

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$). Paginated (max_results/offset); returns a WordResult.

word_fuzzy

Search for a term with sequence-matching (Python difflib.get_close_matches). Results may not be obvious — use when word_find returns nothing and you want fuzzy suggestions.

word_list

Return all vocabulary entries. Only use when you need to process the full vocabulary. Use word_count instead if you only need the total. Paginated (max_results/offset); returns a WordResult.

word_count

Return the total number of entries in the vocabulary. Use instead of word_list when you only need the count.

word_synonym

Search for vocabulary entries that are WordNet synonyms of a word, via the biz-dfch-asdste100nlp library's Nlp class. Use this to find approved alternatives for a non-STE word.

Rules

Tool

Description

rules_find

Search for rules in the ruleset by exact id (case-insensitive), e.g. R1.1 or GR-8. Use this first when you know the exact id.

rules_match

Search rules using a regular expression matched against the rule name and summary.

rules_search

Full-text search across every text a rule carries (section, category, name, summary, and all content blocks: text, notes, examples, technical noun/verb lists). Optionally restrict to specific content types. Paginated (max_results/offset); returns a SearchResult.

rules_by_section

Search for rules by exact section name (case-insensitive), e.g. Words.

rules_by_category

Search for rules by exact category name (case-insensitive), e.g. Technical nouns.

rules_examples

Return content items across rules, optionally scoped by id/section/category and filtered by content type. Paginated (max_results/offset); returns a RulesExamplesResult.

rules_overview

Return a lightweight, per-rule overview (id, type, section, category, name, optional summary, and content counts/flags) without shipping every content item.

rules_toc

Return the distinct (section, category) pairs as a table-of-contents outline, optionally scoped to one section.

Resources

Read-only resources let a client browse or attach ruleset data directly (e.g. via an "@mention" or resource picker), without going through a tool call.

Resource URI

Description

asdste100://rules/toc

Table-of-contents outline of the ruleset: the distinct (section, category) pairs, each with the ids they contain. Mirrors the rules_toc tool with no section filter.

asdste100://rules/rule/{id_}

A single rule/recommendation/information item by exact id (case-insensitive), e.g. asdste100://rules/rule/R1.1. Mirrors the rules_find tool; an unknown id resolves to an empty list rather than an error.

asdste100://version

Installed version numbers of the MCP server itself and its three data-backing libraries: biz-dfch-asdste100vocab, biz-dfch-asdste100rules, and biz-dfch-asdste100nlp.

Installation

pip install biz-dfch-asdste100mcp

Or with uv:

uv add biz-dfch-asdste100mcp

Usage

MCP Inspector

If you want to test the MCP server without a tool like OpenCode, you can do this with MCP Inspector.

MCP Inspector is part of the mcp[cli] package. When you install this project with --extra dev you can use MCP Inspector.

NOTE: The examples below use bunx instead of npx to launch MCP Inspector; npx has not been tested.

stdio (Claude Desktop, OpenCode, and other MCP hosts)

asdste100-mcp

Run MCP Inspector against the server over stdio:

bunx @modelcontextprotocol/inspector uv run --frozen --directory . asdste100-mcp

MCP Inspector with stdio

NOTE: Sometimes, the MCP Inspector cannot connect to the MCP server via stdio. Use the sse option (see below) instead.

SSE / network

asdste100-mcp --transport sse --host localhost --port 8000

NOTE: You do not have to supply the option --port to the MCP server. The default value of port is 8000.

Start the server, then connect MCP Inspector to it — these are two separate commands, run in two separate terminals:

# terminal 1: start the server
uvx --from . asdste100-mcp -t sse
# terminal 2: launch the inspector and connect it to the running server
bunx @modelcontextprotocol/inspector

Start the MCP server with uvx and then start the MCP Inspector with bunx

MCP Inspector with sse

Options

Option

Env var

Default

Description

--transport

ASDSTE100_MCP_TRANSPORT

stdio

Transport mode: stdio or sse

--host

ASDSTE100_MCP_HOST

localhost

Bind address (SSE only)

--port

ASDSTE100_MCP_PORT

8000

TCP port (SSE only)

--env

—

auto-discovered

Path to a .env file

--file / -f

ASDSTE100_MCP_FILES

(empty)

Path to a vocabulary file (*.jsonl); repeatable

--rules-file / -r

ASDSTE100_MCP_RULES_FILES

(empty)

Path to a rules file (a single JSON array); repeatable

Vocabulary configuration

Env var

Default

Description

ASDSTE100_MCP_FILES

(empty)

Colon-separated paths to additional vocabulary files

ASDSTE100_MCP_USE_STE100

true

Load the built-in ASD-STE100 Issue 9 vocabulary

ASDSTE100_MCP_USE_STE100_TECHNICAL_WORDS

false

Also load the technical words vocabulary

Rules configuration

Env var

Default

Description

ASDSTE100_MCP_RULES_FILES

(empty)

Colon-separated paths to additional rules files (each a single JSON array)

ASDSTE100_MCP_USE_STE100_RULES

true

Load the built-in ASD-STE100 Issue 9 ruleset

Add to OpenCode

To add the ASD-STE100 (Simplified Technical English) MCP server to your OpenCode configuration:

  1. Open your OpenCode config file (typically ~/.config/opencode/opencode.json or ~/.config/opencode/opencode.jsonc)

  2. Add the following configuration to the mcp section (and use it via stdio):

"asdste100": {
  "type": "local",
  "enabled": true,
  "command": ["uvx", "--from", "biz-dfch-asdste100mcp", "asdste100-mcp"]
}
  1. Save the file and restart OpenCode

This enables OpenCode to access ASD-STE100 vocabulary and rules lookups for technical writing and documentation compliance.

Development

Install dev dependencies

uv sync --all-extras

Run linters

uv run --frozen ruff format --check
uv run --frozen ruff check
uv run --frozen pylint $(git ls-files '*.py')

Run tests

uv run --frozen python -m unittest discover -v -s tests -t . -p "test_*.py"

This server is part of the ASD-STE100 tooling family:

Make a Release

1. Make sure all tests pass

Before releasing, make sure the CI pipeline is green on the dev branch:

uv run --frozen ruff format --check
uv run --frozen ruff check
uv run --frozen pylint $(git ls-files '*.py')
uv run --frozen python -m unittest discover -v -s tests -t . -p "test_*.py"

2. Increase the version

Update the version in pyproject.toml:

version = "x.y.z"

3. Commit and push to dev

git add pyproject.toml CHANGELOG.md
git commit -m "chore: bump version to vx.y.z"
git push origin dev

4. Merge dev into main

git checkout main
git merge dev
git push origin main

5. Create and push a version tag

export VERSION=x.y.z
git tag v${VERSION}
git push origin v${VERSION}

Pushing the tag triggers the publish.yml workflow, which will:

  1. Build the sdist and wheel.

  2. Publish to TestPyPI (environment testpypi).

  3. Publish to PyPI (environment pypi), only if TestPyPI succeeded.

  4. Publish to the MCP Registry (publish-to-mcp-registry job) — requires the new version to be live on PyPI first.

  5. Create a GitHub Release with auto-generated notes and the distribution artifacts attached.

Then switch back to dev to continue work:

git checkout dev

Configure Trusted Publishing

The workflow uses OIDC Trusted Publishing — no API tokens or secrets are needed.

GitHub: create environments

Go to your repo → Settings → Environments and create two environments:

Environment

Recommended protection

testpypi

None required

pypi

Add a required reviewer to prevent accidental production releases

TestPyPI

Log in at test.pypi.org → Your account → Publishing → Add a new pending publisher:

Field

Value

PyPI project name

biz-dfch-asdste100mcp

Owner

dfch

Repository

biz.dfch.AsdSte100Mcp

Workflow name

publish.yml

Environment

testpypi

PyPI

Log in at pypi.org → Your account → Publishing → Add a new pending publisher:

Field

Value

PyPI project name

biz-dfch-asdste100mcp

Owner

dfch

Repository

biz.dfch.AsdSte100Mcp

Workflow name

publish.yml

Environment

pypi

MCP Registry Publishing

The publish-to-mcp-registry job uses GitHub OIDC authentication and does not require additional setup — it will automatically publish to the official MCP Registry once the package is live on PyPI.

Verify your server is registered:

curl "https://registry.modelcontextprotocol.io/v0.1/servers?search=io.github.dfch/biz-dfch-asdste100mcp"

License

AGPL-3.0-or-later

Available Tools

15 tools
rules_by_categoryA
Read-only

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryYesThe exact category name to search for, e.g. 'Technical nouns'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already supply the read-only and non-destructive safety profile. The description adds useful behavioral details beyond that: matching is exact and case-insensitive, and the result is a possibly empty list. This is meaningful operational context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact, well-structured with clear sections, and front-loads the core purpose and usage guidance. Every sentence contributes useful information; the Returns section is concise and clarifies empty-list behavior.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, read-only tool with an output schema and sibling context, this description is complete: it covers what the tool does, when to use it, parameter semantics, return shape, and empty-result behavior. Nothing needed for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents the category parameter thoroughly with an example. The description's parameter section essentially repeats that information without adding new semantic detail, meeting but not exceeding the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Search for rules in the ruleset by exact category name'. The exact-match and case-insensitive qualifiers clearly distinguish it from fuzzy/partial search siblings like rules_search or rules_find.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly tells the agent to use rules_toc first when the exact category names are unknown, providing a clear alternative and condition. It does not, however, contrast with the other rules_search/rules_find/rules_match siblings, so the guidance is slightly incomplete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rules_by_sectionA
Read-only

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
sectionYesThe exact section name to search for, e.g. 'Words'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only and non-destructive behavior, and the description adds the case-insensitive exact-match contract and the possibly-empty result list. While error behavior is not covered, the annotation coverage lowers the burden and the added details are meaningful.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact, front-loaded with the core behavior and usage guidance, and organized with Parameters and Returns sections. It mildly duplicates the schema's parameter documentation, but this redundancy is not damaging.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, read-only lookup with full schema coverage and an output schema, the description provides everything an agent needs: the exact matching behavior, the fallback tool to use, and the return shape. No important context is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema describes the sole parameter fully, including an example, so the description largely restates it. However, it adds the important case-insensitive matching detail not present in the schema description, which helps the agent format the section argument correctly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the operation ('Search'), the resource ('rules in the ruleset'), and the matching criterion ('exact section name, case-insensitive'). This distinguishes it from siblings like rules_search, rules_find, and rules_by_category, which are broader or category-oriented.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly instructs the agent to call rules_toc first when exact section names are unknown, defining a clear selection boundary. This is direct when/when-not guidance rather than leaving the choice to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rules_examplesA
Read-only

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
id_NoOnly consider the rule with this exact id (case-insensitive).
kindNoOnly return content items of this exact type, e.g. 'ste_example'.
offsetNoThe number of matching entries to skip before returning results, for pagination.
sectionNoOnly consider rules in this exact section (case-insensitive).
categoryNoOnly consider rules in this exact category (case-insensitive).
max_resultsNoThe maximum number of matching entries to return.

Output Schema

ParametersJSON Schema
NameRequiredDescription
totalYes
offsetYes
resultsNo
truncatedYes
max_resultsYes

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the tool read-only and non-destructive; the description adds substantial behavioral detail: exact case-insensitive filters, document-order results, offset/max_results pagination semantics, total/truncated fields, and the warning that the unfiltered ruleset can exceed a thousand content items. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with a one-sentence summary and organized into clear Parameters and Returns sections. It is somewhat long and duplicates schema parameter descriptions, but the return-semantics explanation earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With zero required parameters and all filters optional, an agent can call this tool correctly and interpret pagination without guesswork. It is complete for invocation, though explicit guidance on how it differs from the many sibling search/filter tools would strengthen it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters are already fully documented. The description mostly restates the schema plus a minor 'ste_example' example and pagination note, adding little meaning beyond what the input schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence states a specific verb and resource: returning content items across rules, with optional scoping and filtering. This clearly distinguishes it from rule-metadata tools like rules_overview or rules_toc, though it does not explicitly name sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context about what the tool does and why pagination matters, but it never says when to prefer this tool over siblings like rules_search or rules_find, nor does it state exclusions or when-not-to-use conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rules_findA
Read-only

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
id_YesThe exact rule/recommendation id to search for, e.g. 'R1.1' or 'GR-8' (case-insensitive).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds useful behavioral context: matching is case-insensitive, exact-id scoped, and the result may be empty. This goes beyond the basic safety profile without over-explaining.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is clearly structured with a short summary, parameter documentation, and return information. It is mostly concise, though the Parameters and Returns sections duplicate information already available in the schema and output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter lookup tool, the description covers the key usage scenario, fallback behavior, and result shape. With annotations and an output schema present, nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the Parameters section essentially restates the schema's description of id_. No additional semantics are provided beyond what the schema already contains, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Search') and resource ('rules in the ruleset') with a clear scope ('by exact id'). It differentiates from siblings by naming rules_match and rules_search as alternatives for when exact-id lookup fails.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly instructs to 'Use this first when you know the exact rule/recommendation id' and says to fall back to rules_match or rules_search if it returns no items. This gives clear when-to-use and alternative guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rules_matchA
Read-only

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
patternYesA regular-expression pattern matched against the rule name and summary (case-insensitive).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral detail beyond this: case-insensitive regex matching, the specific fields searched, and that the result is a list of matching rules. This goes beyond the annotations without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and well-structured: a one-sentence purpose, a useful sibling distinction, then concise Parameters and Returns sections. Every sentence contributes either purpose, usage guidance, or interface context, with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with one parameter, an output schema, and read-only annotations, the description is complete. It explains the search scope, case-insensitivity, the alternative tool, and the return shape. Nothing an agent needs to invoke this tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents the single pattern parameter. The description's Parameters section adds no meaning beyond the schema, which matches the baseline expectation of 3: the schema carries the semantic weight.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action—'Search for rules in the ruleset using a regular expression'—and clarifies that matching is against both name and summary. It also differentiates itself from rules_search by naming what it does NOT do (full-content search). This gives an agent a clear, unambiguous purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says to use rules_search instead when full rule content must be searched, drawing a clear boundary between the two tools. It also implies this tool is appropriate when searching only name and summary is sufficient. This is strong when-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rules_overviewA
Read-only

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
briefNoWhen true (default), omit the summary to keep the payload small.
type_NoOnly consider entries of this exact type, e.g. 'rule' (excludes recommendations and information blocks).
sectionNoOnly consider rules in this exact section (case-insensitive).
categoryNoOnly consider rules in this exact category (case-insensitive).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description adds meaningful behavioral detail: the tool returns only lightweight summaries with counts/flags rather than content items, omits summaries when brief=true, and returns results in ruleset order. This goes well beyond the safety hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a front-loaded purpose, a usage pointer, a Parameters section, and a Returns section. Every sentence carries useful information, and nothing is redundant padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only overview tool with four optional parameters and an output schema, the description fully covers purpose, usage context, parameters, return shape, and ordering. An agent has everything needed to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description repeats the schema's parameter explanations (case-insensitive, exact section/category, type_ example, brief default) without adding meaning beyond what the input schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Return a lightweight, per-rule overview of the ruleset.' It also clarifies what the result does NOT contain ('rather than the content items themselves'), which distinguishes it from siblings like rules_find and rules_examples.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says to use this tool 'for a cheap, low-token summary of what rules exist before drilling into rules_find or rules_examples'. This names concrete alternatives and gives a clear condition for choosing this tool over them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rules_tocA
Read-only

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
sectionNoOnly consider rules in this exact section (case-insensitive).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only safety. The description adds meaningful behavioral detail: distinct grouping, first-seen ordering, and exact section case-insensitive filtering, plus what each returned entry includes. This goes beyond what annotations convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear opening sentence, then Parameters and Returns sections. It is reasonably concise, though the parameter explanation duplicates the schema and could be trimmed without loss.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple optional-parameter tool with an output schema, the description covers purpose, usage context, and return semantics. It provides enough for an agent to call it correctly without additional explanation, and the output schema fills in structural details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the description repeats the parameter's case-insensitive exact-section meaning without adding new semantic details. Baseline 3 is appropriate as the schema already fully documents the parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool returns distinct (section, category) pairs in first-seen order and characterizes it as a table-of-contents outline. This clearly distinguishes it from per-rule sibling tools by noting it gives no per-rule detail.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides clear usage context by recommending this tool before drilling into rules_overview, rules_by_section, or rules_by_category. However, it stops short of explicitly saying when not to use it, though the 'without any per-rule detail' phrase implies that limitation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

word_countA
Read-only

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds a small behavioral detail by specifying the return type (int), but this is also implied by the 'Returns' section. There is no additional context about edge cases, performance, or counting semantics beyond the basic function, so a 3 is appropriate given the annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: the main action appears in the first sentence, the usage guidance is a single clear sentence, and the return type is given in a minimal 'Returns' block. Every sentence earns its place with no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, parameterless tool with a provided output schema and comprehensive annotations, the description fully covers what an agent needs: what it does, when to use it, and what it returns. No additional information about errors or edge cases is necessary given the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and the description provides a baseline of 4 per the rubric. The schema coverage is trivially 100% since there are no parameters to describe, and the description does not need to add parameter details. The 'Returns' section adds value by stating the output type, which is not captured in the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Return') and a clear resource ('total number of entries in the vocabulary'), and explicitly distinguishes itself from the sibling word_list by noting it should be used when only the count is needed. This makes the tool's purpose unambiguous and differentiates it without requiring schema inspection.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly names the alternative (word_list) and the condition for choosing this tool ('when you only need the count'). This direct routing leaves no ambiguity about when to use word_count over its sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

word_findA
Read-only

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
termYesThe term to look up.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered externally. The description adds useful behavioral detail: case-insensitive exact matching, the content of returned entries, and the 'possibly empty' result behavior, which is valuable beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections for overview, usage, parameters, and returns. Every sentence contributes useful information, and the most important scoping and routing guidance is front-loaded. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter lookup tool with an output schema and safety annotations, the description is complete: it defines matching behavior, return contents, fallback routing, and empty-result semantics. Nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents the `term` parameter. The description adds meaning by specifying that the match is exact and case-insensitive and that the term can be a word or phrase, which helps an agent know what input is valid.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Search for a term by exact name (case-insensitive) in the ASD-STE100 Issue 9 vocabulary.' It also names the sibling it is not by saying to use `word_match` with a wildcard when this returns no items, so an agent can tell them apart.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs when to use the tool: 'Use this first when you know the exact word.' It also gives the alternative path: 'Use `word_match` with a wildcard if this tool returns no items.' This is clear routing guidance with no ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

word_find_manyA
Read-only

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
termsYesThe list of terms to look up exactly.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds valuable behavioral details beyond annotations: case-insensitive matching, per-term independent results, and that unknown/misspelled terms yield an empty `results` list rather than altering the overall structure. It also explains result ordering. This goes beyond mere annotation repetition, though it doesn't discuss any error scenarios or rate limits, which are minor for a read-only batch lookup.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently structured: a concise purpose sentence, a note on equivalence and benefit, then clear Parameters and Returns sections. Every sentence adds information without fluff. The key behavioral notes are front-loaded, making it easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only batch lookup tool with an output schema present, the description covers all necessary operational aspects: what it does, when to use it, how it behaves for edge cases (unknown terms), and the structure of the return. The annotations cover safety, and the description supplies the remaining context an agent needs to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already describes the `terms` parameter as 'The list of terms to look up exactly' (100% coverage). The description adds meaning by clarifying that each term is processed independently, results are per-term, and matching is case-insensitive. This enhances understanding of how the parameter is interpreted, providing value beyond the schema's simple description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb-resource pair: 'Search for multiple terms by exact name (case-insensitive) in the ASD-STE100 Issue 9 vocabulary in a single call.' It clearly states the tool's scope (multiple exact terms) and differentiates from the sibling `word_find` by explicitly noting it is equivalent to calling `word_find` once per term but avoids round-trips. This makes the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides direct usage guidance: it tells the agent to use this tool when multiple terms need to be looked up exactly, instead of calling `word_find` repeatedly. It even names the alternative (`word_find`) and the condition for choosing this tool (multiple terms). This satisfies the requirement for explicit when-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

word_fuzzyA
Read-only

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
termYesThe term to look up.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only and non-destructive behavior. The description adds useful behavioral context by naming the underlying algorithm (Python difflib.get_close_matches) and warning that 'results may not be obvious,' which helps set expectations for fuzziness and potential surprises.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and well-structured, with the core purpose in the first sentence, a usage hint in the second, and a clean Parameters/Returns layout. No redundant filler or restatement of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter, read-only fuzzy lookup tool with an output schema, the description provides everything needed: the search behavior, when to use it, parameter meaning, and a note that the result list may be empty. Nothing important is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents 'term' at 100% coverage with 'The term to look up.' The description adds meaning by specifying 'word or phrase' and clarifying that the search is approximate, which is important behavioral nuance beyond the bare schema description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action — search for a term with sequence-matching — and clearly identifies the resource as vocabulary entries. It also distinguishes itself from the exact-search sibling by describing approximate matching and 'similar' results, so an agent can tell this apart from word_find without inspecting schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says when to use the tool: 'use when find returns nothing and you want suggestions.' This is clear and actionable. It does not explicitly rule out word_match or word_synonym, but the condition and intent are specific enough for a competent agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

word_listA
Read-only

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
offsetNoThe number of matching entries to skip before returning results, for pagination.
max_resultsNoThe maximum number of matching entries to return.

Output Schema

ParametersJSON Schema
NameRequiredDescription
totalYes
offsetYes
resultsNo
truncatedYes
max_resultsYes

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description aligns with those. It adds substantial behavioral context beyond the annotations: the operation is expensive, the vocabulary holds thousands of entries, and pagination works through offset and max_results with total and truncated fields describing the result set.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description front-loads the core purpose and usage guidance in the first two sentences, then uses clear headings for Parameters and Returns. The Parameters section is somewhat redundant with the schema, but the structure is scannable and the extra detail about return semantics earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a paginated list operation with an existing output schema, the description covers everything needed: when to use it, when to use an alternative, cost implications, pagination parameters, and the meaning of the returned fields. The max_results upper bound appears only in the schema, but that is acceptable since the schema is part of the tool contract.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already fully documents offset and max_results, including defaults and bounds. The description's Parameters section largely restates the schema ('maximum number... to return', 'skip before returning results') without adding meaningful new semantic information. The baseline of 3 applies because the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb-resource pair: 'Return all vocabulary entries.' It also differentiates itself from the sibling word_count by directing the agent to use word_count when only the total is needed. The pagination nuance is clarified in the Returns section, so the overall intent is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use this tool: 'Only use when you need to process the full vocabulary.' It names the alternative tool and the condition for choosing it: 'Use word_count instead if you only need the total.' It also warns that the operation is expensive and returns thousands of entries, giving the agent a clear reason to prefer lighter alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

word_matchA
Read-only

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
termYesThe term to look up.
offsetNoThe number of matching entries to skip before returning results, for pagination.
max_resultsNoThe maximum number of matching entries to return.

Output Schema

ParametersJSON Schema
NameRequiredDescription
totalYes
offsetYes
resultsNo
truncatedYes
max_resultsYes

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds meaningful behavioral context beyond that: results are paginated, broad patterns can match large portions of vocabulary, and the response includes total count and a truncated flag. It also clarifies how offset and max_results affect the returned page.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and front-loaded: a one-sentence purpose, a brief usage note with examples, then compact parameter and return sections. Every sentence earns its place, with no redundant filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only regex search tool, the description covers the operation, pagination behavior, parameter semantics, and return structure (results, total, truncated). This is sufficient for an agent to invoke the tool correctly without needing further clarification.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage and fairly clear descriptions, but the tool description adds critical semantics: 'term' is explicitly a regular-expression pattern with an example ('util.*'), rather than just 'The term to look up.' The pagination semantics of offset and max_results are also reinforced in prose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Search the vocabulary using a regular expression pattern' and 'Return all entries whose term matches.' This clearly distinguishes word_match from likely siblings like word_fuzzy or word_find by making the regex mechanism explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly states when to use the tool: 'Use it to find all words with a common prefix or pattern' and gives concrete regex examples. It does not name alternatives or exclusions, so it stops short of full when-not guidance, but the intended use case is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

word_synonymA
Read-only

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
termYesThe term to look up.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description reveals the algorithm (collect WordNet synsets, cross-reference lemmas case-insensitively), scoping (approved and rejected entries included), and result behavior (term excluded, deduplicated, sorted, empty when no synsets). This substantially exceeds the readOnly/destructive flags already in annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Structured with a summary, use-case sentence, Parameters, and Returns sections, with no filler. Algorithmic details earn their place because they tell agents exactly what to expect from the call.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With one documented parameter, an output schema, and annotations covering safety, the description supplies all remaining decision-relevant details: eligibility scope, exclusions, empty results, and ordering. Nothing an agent needs to invoke it correctly appears missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already fully describes the only parameter, term, with 100% coverage, and the description's 'The word to search synonyms for' adds no new meaning beyond the schema. Baseline 3 applies because the schema carries the semantic weight.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description opens with 'Search for vocabulary entries that are WordNet synonyms of a word,' a specific verb and resource. It further distinguishes the tool by stating it is for finding approved alternatives to non-STE words and by identifying its scope with sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The line 'Use this to find approved alternatives for a non-STE word' directly states when the tool is appropriate. It also names word_find/word_match/word_fuzzy as same-scope operations, but it does not explicitly say when to prefer those alternatives instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 15 tool updatesv3.0.0
    • First observedrules_by_category
    • First observedrules_by_section
    • First observedrules_examples
    • First observedrules_find
    • First observedrules_match
    • First observedrules_overview
    • First observedrules_search
    • First observedrules_toc
    • First observedword_count
    • First observedword_find
    • First observedword_find_many
    • First observedword_fuzzy
    • First observedword_list
    • First observedword_match
    • First observedword_synonym

TDQS

A4.5/5.0

Scored across 15 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: word_* tools cover exact, batch, regex, fuzzy, synonym lookup, count, and list; rules_* tools cover id, section, category, full-text, overview, examples, and TOC. The few adjacent tools (word_find vs word_find_many, rules_match vs rules_search) are explicitly differentiated in their descriptions.

Naming Consistency5/5

All 15 tools follow a consistent snake_case verb_noun pattern with clear word_ and rules_ prefixes. The domain of each tool is immediately obvious from its name.

Tool Count5/5

15 tools is well within the ideal range for a reference server covering both a vocabulary and a ruleset. Each tool serves a distinct lookup or navigation purpose, so none feel redundant.

Completeness5/5

The tool surface provides comprehensive read-only coverage: vocabulary count, list, exact/batch/fuzzy/regex/synonym search, and rules TOC, overview, find by id/category/section, match, full-text search, and examples. There are no obvious dead ends or missing operations for the stated purpose.

Maintenance

ActivityStale
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    C
    quality
    D
    maintenance
    An MCP server that provides text conversion, formatting, and analysis functions, which can be directly integrated into the development workflow.
    43
    2
    Apache 2.0
  • A
    license
    B
    quality
    C
    maintenance
    An MCP server for reading, editing, and validating Microsoft Word documents with specialized support for track changes, comments, and footnotes. It enables structural auditing, heading extraction, and precise OOXML-level document manipulation through natural language tools.
    100
    57
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    A professional MCP server for analyzing content against the official Microsoft Writing Style Guide, enabling style, grammar, terminology, and accessibility checks via AI tools like VS Code and GitHub Copilot.
    1
    -