Skip to main content
Glama

@shuji-bonji/s1000d-reader-mcp

English | 日本語

An MCP server that lets an LLM read S1000D® data modules and publication modules as structure rather than as XML. It returns the heading hierarchy, numbered steps, warnings, cautions and notes, illustrations (ICN), tables and the titles of reference targets intact, and the server evaluates which product the content applies to (applicability) and passes on only the result. Every response carries how far the document has been verified (verification).

IMPORTANT

This is a personal project and is not affiliated with ASD (Aerospace, Security and Defence Industries Association of Europe). S1000D® is a registered trademark of ASD. The S1000D specification, XML schemas, default BREX and official samples are not included in any package or repository, because their terms of use do not grant redistribution. Obtain them froms1000d.org and point the S1000D_SPEC_DIR environment variable at the extracted folder.

What it does

Tool

Description

list_data_modules

Lists the data modules in a CSDB (and, on request, PMs, DMLs, DDNs, IMFs and UPFs) with their DMC, title, issue, language, schema name and applicability display text. Filters by model identification code, system code, information code, schema name and title text. A DML or DDN row also carries its code, issue date, entry or item count and a reconciliation summary against the CSDB (found / issue-mismatch / not-found / not-checked; for a DML also how many DMs and PMs it does not list). The per-entry result comes from reconcile_dml in s1000d-verify-mcp

read_data_module

Reads one data module as structure: the identification and status section, the body tree (sections, paragraphs, lists, tables, illustrations, warnings, numbered steps and requirements, process branches, fault isolation questions and answers), references (with titles) and the verification status. Pass product to mark each block applicable / notApplicable / undetermined. With section: "outline" it returns only headings, step numbers, the first sentence and the size of each subtree (nodes, characters, warnings), so a large data module can be surveyed before its body is read

read_publication_module

Reads a publication module as a table of contents: the pmEntry tree and the resolved target of each dmRef / pmRef (file, title, issue)

resolve_reference

Resolves a DMC, PMC or ICN to a file in the CSDB. For an ICN it also returns the DOCTYPE declaration of the referencing DM (file name and NOTATION)

describe_applicability

Returns the applicability vocabulary: product attributes from the ACT (id, name, enumerations, identifiers), conditions from the CCT, products from the PCT (values that can be passed to product as they are), the applic statements of the DM (id and display text), and attributes to which the PCT assigns no value. It evaluates nothing

read_icn_metadata

Reads an ICN metadata file (IMF): ICN, issue, title, keywords, security classification and a list of the items in the status section

Reading applicability

State

Meaning

applicable

Applies to the product you passed

notApplicable

Does not apply. omitNotApplicable: true leaves it out of the body

undetermined

Cannot be evaluated. reason says why (the name of an attribute the product lacks, product not given, an applicIdentValue missing from the applicability repository). This does not mean "does not apply"

The server does not return assert / evaluate expressions. Look up the attributes and values you need with describe_applicability and pass them to product in the form { "attributes": { "model": "…" }, "conditions": { … } }.

Verification status (verification)

By default the server runs XSD validation only (verify: "schema"). verify: "full" also checks against the BREX (Business Rules Exchange) chain and resolves references; verify: "none" skips them. A skipped step is reported as not-run, and a missing XSD as schema-not-found; neither is valid. In a document that violates the XSD, elements may be in positions that differ from the specification, so treat the reading of the body with suspicion as well.

Security classification (securityClassification) and size (size)

Every read_data_module and read_publication_module response starts with securityClassification: dataModule (the value in the identification and status section) and inContent (the number of body elements per value). The server does not interpret the values (S1000D leaves their meaning to the project). An agent can decide how to handle the content before quoting it. The body carries size (nodes, characters, count per kind, number of warnings) so the amount to read can be estimated.

Related MCP server: Synergy/DE MCP Server

What it does not do

WARNING
  • It does not summarise or translate. Its job is to return the material a summary needs (headings, step numbers, warning types, reference targets) without dropping anything.

  • It does not judge conformance to S1000D. Read the details of XSD and BREX violations with s1000d-verify-mcp, and the explanation of BREX rules with s1000d-brex-mcp.

  • The body is structured for 5 types only: descript / proced / process / fault / pm. Other types return content.structured: false and only the identification and status section. Unknown elements are kept as kind: "unknown" with their text only and counted in content.unknownElements.

Configuration

Environment variable

Description

S1000D_SPEC_DIR

The folder where you extracted the S1000D distribution you obtained. The server looks for the XSD (xml_schema_flat/) and the default BREX under it. It does not use the copies of the XSD inside the data dictionary

S1000D_CSDB_DIR

The folder that holds the project's data modules. Several folders can be given, separated by : (; on Windows). Reading by DMC, reference targets, the ACT, CCT and PCT, and the applicability repository are looked up here

Folders can also be added with the tool argument csdbDirs.

Config file (when environment variables are not passed, as with plugins in Claude Desktop)

If S1000D_SPEC_DIR / S1000D_CSDB_DIR are not set, the server reads the config file ~/.config/s1000d-stack/config.json (under XDG_CONFIG_HOME if it is set; S1000D_CONFIG changes the location). Claude Desktop does not pass environment variables to servers installed as plugins, and does not substitute ${VAR} written in the plugin's env. When you install the server as a plugin, write the folders here.

{
  "specDir": "/path/to/s1000d/issue-7",
  "csdbDirs": ["/path/to/your/csdb"]
}

Environment variables take precedence when they are set. Paths that start with ~/ are accepted. The config file is read again on every call, so the server does not need to be restarted after you edit it.

Example configuration for Claude Desktop / Claude Code

{
  "mcpServers": {
    "s1000d-reader": {
      "command": "npx",
      "args": ["-y", "@shuji-bonji/s1000d-reader-mcp"],
      "env": {
        "S1000D_SPEC_DIR": "/path/to/s1000d/issue-7",
        "S1000D_CSDB_DIR": "/path/to/your/csdb"
      }
    }
  }
}

Running over HTTP (embedding in a product)

The default is stdio. With --http the server starts over Streamable HTTP, so a CSDB product's server or a web application can call it over HTTP (the embedding foundation of stage 2.5).

npx -y @shuji-bonji/s1000d-reader-mcp --http                      # http://127.0.0.1:3000/mcp
npx -y @shuji-bonji/s1000d-reader-mcp --http --port 3101 --path /reader

Argument

Default

Meaning

--host

127.0.0.1

Address to bind to

--port

3000

Port; 0 picks a free port

--path

/mcp

Path of the MCP endpoint. GET /healthz returns the name and version

--allowed-host

(see below)

Host names allowed in the Host header; comma-separated or repeated

--allowed-origin

(see below)

Host names allowed in the Origin header

When --host is a loopback address (127.0.0.1 / ::1 / localhost), Host and Origin are limited to localhost names (DNS rebinding protection). When bound to any other address they are not checked, so put the server behind the product's reverse proxy or authentication. Authentication, authorization and multi-tenancy are not part of this server. Environment variables and the config file work the same as with stdio.

How it works

All reading, evaluation and validation code lives in the shared library @shuji-bonji/s1000d-core; this server holds only the interpretation of arguments and the shape of the responses. The verification status is built with the same function as s1000d-verify-mcp, so the results of the two servers agree.

Development

npm install
npm test            # runs on self-made test data only
npm run test:spec   # uses the distribution you obtained (location given by S1000D_SPEC_DIR; default ../../specs/s1000d/issue-7)
npm run build && S1000D_SPEC_DIR=/path/to/issue-7 S1000D_CSDB_DIR=/path/to/csdb npm start   # start over stdio

License

MIT. S1000D® is a registered trademark of ASD. This software is not affiliated with ASD and does not include the specification, schemas or official samples.

Available Tools

6 tools
describe_applicabilityA

Describe the applicability vocabulary of a data module so a product can be chosen: the ACT product attributes (ids, names, enumerations/patterns, which one identifies the product), the CCT condition types and conditions, the PCT products (ready-made product values), the applic statements in the data module (ids and display texts), and which attributes used by the statements have no value in the PCT. Nothing is evaluated here; pass the chosen values as "product" to read_data_module.

NameRequiredDescriptionDefault
dmcNoDMC of the data module to read from the CSDB (e.g. "S1000DBIKE-AAA-D00-00-00-00AA-041A-A"; "DMC-" prefix optional). Alternative to path/xml.
xmlNoThe document as an XML string (alternative to path; max 5 MB).
pathNoFile path of the document.
csdbDirsNoExtra CSDB folders to search (in addition to S1000D_CSDB_DIR) for data modules by DMC, referenced objects, ACT/CCT/PCT and BREX.

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does well: it explicitly declares this is a non-evaluating read/preparation operation, which prevents an agent from expecting it to compute applicability. It stops short of disclosing return shape details (e.g., structure/size of the vocabulary) but the enumerated content list compensates substantially.

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?

Single dense sentence with the core purpose front-loaded, followed by the enumerated return contents and the downstream routing note. The enumeration is long but each item earns its place by describing returned vocabulary; no filler.

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?

No output schema exists, so the description must explain returns—and it does by listing the vocabulary categories returned. For a 4-param, zero-annotation tool this is nearly complete; only the mutual exclusivity/precedence of dmc vs xml vs path is left unaddressed.

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 dmc, xml, path, and csdbDirs are already documented in the schema. The description adds no syntax or precedence guidance beyond the schema (e.g., which source wins when multiple are provided), so the baseline 3 applies.

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 ('Describe the applicability vocabulary of a data module') and then enumerates the concrete contents returned: ACT attributes, CCT condition types, PCT products, applic statements, and attributes lacking PCT values. This is clearly distinguishable from siblings like read_data_module, which evaluates rather than describes.

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?

Gives an explicit purpose ('so a product can be chosen'), states what it does not do ('Nothing is evaluated here'), and routes to the correct alternative ('pass the chosen values as "product" to read_data_module'). The condition that selects each tool is fully spelled out.

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

list_data_modulesA

List the CSDB objects (data modules by default; optionally publication modules, DML, DDN, IMF, UPF) in the CSDB folders with DMC parts, techName/infoName, issue, language, schema name (descript/proced/…), S1000D issue and applicability display text. Filter by modelIdentCode, systemCode, infoCode, schemaName or title text. Paged with offset/limit.

NameRequiredDescriptionDefault
limitNoObjects per call (default 100, max 1000).
filterNo
offsetNoIndex of the first object (default 0).
includeNoObject kinds to list (default: dm).
csdbDirsNoExtra CSDB folders to search (in addition to S1000D_CSDB_DIR) for data modules by DMC, referenced objects, ACT/CCT/PCT and BREX.

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden and does well on return shape (DMC parts, techName/infoName, issue, language, schema name, S1000D issue, applicability text) and paging defaults. It says nothing about permissions, error behavior, or what happens when csdbDirs overlaps the default S1000D_CSDB_DIR, which for a filesystem-scanning tool is a meaningful gap.

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?

Two dense sentences plus a short paging note, front-loaded with the resource and its default. The long parenthetical and comma-list of returned fields make it slightly heavy to parse, but nothing is filler.

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?

No output schema exists, so listing the returned fields is essential and done here; paging semantics are also covered. Remaining holes are secondary: the 'icn' include option and the relationship between csdbDirs and the environment default are left unexplained.

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 high (80%), so the baseline is 3. The description usefully states the dm default for 'include' and names the filterable fields, but 'title text' loosely paraphrases a filter the schema defines as matching techName/infoName, adding ambiguity rather than precision.

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 description opens with a specific verb+resource ('List the CSDB objects') and enumerates the object kinds covered, with data modules named as the default. This clearly separates it from read_data_module/read_publication_module siblings, though those siblings are never named explicitly.

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?

Browsing/filtering usage is implied by the filter and paging details, but there is no explicit 'use this when… instead of read_data_module' guidance. An agent must infer that this tool is for discovery and the read_* tools for retrieval of a single object.

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

read_data_moduleA

Read one data module as structure, not XML: identification and status (DMC, issue, language, title, BREX ref, QA, DM-level applicability), the body as a tree of blocks (sections, paragraphs, lists, tables, figures with ICN, warnings/cautions/notes, numbered steps, requirements; processes and fault isolation too), the references it makes, and ALWAYS a "verification" status (XSD by default). Applicability of each block is evaluated for the given product (applicable / notApplicable / undetermined); without a product, only display texts are returned — assert expressions are never returned.

NameRequiredDescriptionDefault
dmcNoDMC of the data module to read from the CSDB (e.g. "S1000DBIKE-AAA-D00-00-00-00AA-041A-A"; "DMC-" prefix optional). Alternative to path/xml.
xmlNoThe document as an XML string (alternative to path; max 5 MB).
pathNoFile path of the document.
verifyNoHow much to verify before reading: "schema" (default) runs XSD validation only; "full" also checks BREX along the brexDmRef chain and resolves references; "none" skips verification (reported as not-run).schema
productNoThe product to evaluate applicability for. attributes: ACT productAttribute id → value (e.g. {"model": "Brook trekker", "version": "Mk9"}); conditions: CCT cond id → value. Omit to get "undetermined" with display texts only. Use describe_applicability to learn the available ids and values.
sectionNoWhich part to return (default all).all
csdbDirsNoExtra CSDB folders to search (in addition to S1000D_CSDB_DIR) for data modules by DMC, referenced objects, ACT/CCT/PCT and BREX.
maxNodesNoCap on body nodes returned (default 5000).
omitNotApplicableNoDrop blocks that are notApplicable for the given product (default false: keep them, marked). The number dropped is reported.

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations the description carries the full burden and does well: it discloses that verification always runs (XSD by default), that applicability is evaluated per block as applicable/notApplicable/undetermined, that without a product only display texts come back, and that assert expressions are never returned. It omits failure modes for a missing DMC and any size/truncation behavior beyond the schema's 5 MB note.

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 purpose and the "not XML" contrast are front-loaded, and the dense enumeration of return contents is grouped logically. The long parenthetical content list is heavy but every clause carries information an agent needs to anticipate the output shape.

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 9-parameter, nested-object tool with no output schema, the description does the work of describing the return shape (status block, block tree, references, verification) and the applicability model. What it lacks is error/edge-case behavior (unknown DMC, unresolvable BREX) and any note on node capping interacting with the tree.

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 baseline is 3; the description adds real meaning beyond it by explaining the consequence of omitting `product` (undetermined, display texts only) and the semantics of the applicability evaluation that `omitNotApplicable` and `product` control. The verify and section parameters are left entirely to the 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?

States a specific verb and resource (read one data module) plus a differentiating scope ("as structure, not XML") and enumerates exactly what is returned: identification/status, body tree, references, and a verification status. An agent can distinguish it from list_data_modules and read_publication_module without opening any schema.

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?

Implies it is the structured-read counterpart to raw XML reading and points to describe_applicability for discovering product attribute/condition ids. It never explicitly names an alternative or a when-not-to-use condition, so routing is clear but not fully spelled out.

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

read_icn_metadataB

Read an ICN metadata file (IMF, icnmetadata.xsd): ICN, issue, title, keywords, security, source/originator and other status items as a flat list, plus the related ICN files found in the CSDB.

NameRequiredDescriptionDefault
icnNoICN whose IMF to read from the CSDB (e.g. "C0419-S1000D0360-001-01" or "ICN-C0419-…").
xmlNoThe document as an XML string (alternative to path; max 5 MB).
pathNoFile path of the document.
csdbDirsNoExtra CSDB folders to search (in addition to S1000D_CSDB_DIR) for data modules by DMC, referenced objects, ACT/CCT/PCT and BREX.

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the behavioral-disclosure burden. "Read" implies a non-mutating operation, and the return contents are briefly described, but there is no information about permissions, error behavior, missing files, or how the alternative input parameters interact.

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 definition is a single front-loaded sentence with no wasted text. The main action and return description come first, followed by supporting details about related ICN files.

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

Completeness3/5

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

For a read-only tool with no output schema and no annotations, the description provides an adequate sketch of returned metadata and related files. However, it does not cover usage selection among the optional input modes or behavioral edge cases, leaving meaningful gaps.

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 already include useful examples and constraints such as the 5 MB XML limit. The description adds no additional parameter semantics, so this sits at the baseline for fully documented schemas.

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 description gives a specific verb and resource: "Read an ICN metadata file," and enumerates the metadata fields returned. It is clearly distinguishable from generic data-module tools, though it does not explicitly contrast itself with sibling tools such as read_data_module or read_publication_module.

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

Usage Guidelines2/5

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

The description states what the tool reads but gives no guidance on when to use it instead of sibling tools, nor when to choose the icn, path, or xml input modes. No prerequisites or exclusions are mentioned.

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

read_publication_moduleB

Read a publication module (PMC) as a table of contents: the pmEntry tree with titles, and for each dmRef/pmRef the resolved target (file, techName/infoName, issue) from the CSDB. Also returns the PM identification and a verification status.

NameRequiredDescriptionDefault
pmcNoPMC to read from the CSDB (e.g. "S1000DBIKE-B6865-EPWG1-00"; "PMC-" prefix optional). Alternative to path/xml.
xmlNoThe document as an XML string (alternative to path; max 5 MB).
pathNoFile path of the document.
verifyNoHow much to verify before reading: "schema" (default) runs XSD validation only; "full" also checks BREX along the brexDmRef chain and resolves references; "none" skips verification (reported as not-run).schema
csdbDirsNoExtra CSDB folders to search (in addition to S1000D_CSDB_DIR) for data modules by DMC, referenced objects, ACT/CCT/PCT and BREX.

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full behavioral burden. It usefully discloses that the tool reads from the CSDB, resolves dmRef/pmRef targets, and reports verification status, but it does not explain source precedence among pmc/xml/path, failure modes, or permission requirements.

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 two tightly constructed sentences with no filler. The core purpose and return contents are front-loaded and easy to scan.

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?

There is no output schema, but the description sufficiently explains the return shape: pmEntry tree, resolved targets, PM identification, and verification status. It omits how the mutually alternative pmc/xml/path inputs are prioritized and what happens when none is supplied, which keeps it from a 5.

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 five parameters, including the verify enum and csdbDirs behavior. The description adds little parameter-level meaning beyond mentioning verification status, so the baseline of 3 is appropriate.

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 description gives a specific verb and resource: 'Read a publication module (PMC) as a table of contents.' It also details the key output shape, including the pmEntry tree and resolved dmRef/pmRef targets. It does not explicitly differentiate itself from siblings such as read_data_module or resolve_reference, so it stops short of a 5.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance, no exclusions, and no named alternatives. A reader can infer that this tool is for PMC table-of-contents reads, but the description does not say when to choose it over read_data_module or resolve_reference.

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

resolve_referenceA

Resolve one reference to a CSDB object: a DMC, a PMC, or an ICN (file name or entity name). Returns the file path(s), issue(s) and title. For an ICN, pass "fromPath" of the data module whose DOCTYPE declares the entity to get the declared file and notation.

NameRequiredDescriptionDefault
dmcNoDMC to resolve.
icnNoICN (entity name or file name) to resolve.
pmcNoPMC to resolve.
csdbDirsNoExtra CSDB folders to search (in addition to S1000D_CSDB_DIR) for data modules by DMC, referenced objects, ACT/CCT/PCT and BREX.
fromPathNoData module whose DOCTYPE declares the ICN entity (optional).

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description must carry the behavioral load, and it does disclose the return payload (paths, issues, title) and one conditional behavior for ICN resolution. It says nothing about what happens when a reference cannot be resolved (error vs. empty result), whether multiple matches can come back, or how far the search reaches beyond csdbDirs and S1000D_CSDB_DIR. Read-only nature is only inferable from "Resolve".

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?

Three short sentences, front-loaded with the core action and its identifier vocabulary before the output and the ICN special case. No filler, and the conditional guidance is placed last where it belongs.

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

Completeness3/5

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

No annotations and no output schema, so the description is the only behavioral source, and it does cover return values. However, with five parameters and zero marked required, the most consequential ambiguity — whether dmc, pmc, and icn are alternatives and what happens if zero or several are given — is never addressed, nor is unresolved-reference behavior.

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 baseline is 3. The description adds a little for ICN: fromPath is tied to the DOCTYPE that declares the entity and produces the declared file and notation, which clarifies the payoff of supplying it. The dmc, pmc, and csdbDirs parameters receive no treatment in the description, and the relationship among dmc/pmc/icn (mutually exclusive? exactly one required?) is left unstated.

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?

A specific verb ("Resolve") applied to a well-scoped resource ("one reference to a CSDB object"), with the three accepted identifier kinds enumerated as DMC, PMC, and ICN. It also states the realized output (file path(s), issue(s), title), so an agent knows what it gets back. It stops short of distinguishing itself from siblings such as read_icn_metadata or read_data_module, leaving that inference to the agent.

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?

Usage is implied by the wording: resolve one identifier at a time and get paths/titles rather than document content, which contrasts implicitly with the read_* siblings. The one explicit conditional is useful — pass fromPath when resolving an ICN whose declaring DOCTYPE matters. There is no statement of when to prefer this over read_icn_metadata or read_data_module, and no exclusions.

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. 6 tool updatesv0.7.0
    • First observeddescribe_applicability
    • First observedlist_data_modules
    • First observedread_data_module
    • First observedread_icn_metadata
    • First observedread_publication_module
    • First observedresolve_reference

TDQS

A3.9/5.0

Scored across 6 tools

Disambiguation5/5

Each tool targets a clearly distinct operation: listing CSDB objects, reading a data module, reading a publication module, resolving a reference, reading ICN metadata, and describing applicability vocabulary. The overlap around ICNs is well separated by purpose (resolve location vs read metadata), and read_data_module vs read_publication_module concern different S1000D object types.

Naming Consistency5/5

All names follow a consistent snake_case verb_noun pattern: list_data_modules, read_data_module, read_publication_module, resolve_reference, read_icn_metadata, describe_applicability. The repeated verbs are used predictably for operations on different object types.

Tool Count5/5

Six tools is well-scoped for an S1000D CSDB reader: enough to list, read, resolve, inspect metadata, and understand applicability without bloating the surface. Each tool has a clear role in the workflow.

Completeness4/5

The set covers the core reader workflows for data modules, publication modules, references, ICN metadata, and applicability discovery. A minor gap is that list_data_modules can enumerate DML, DDN, IMF, and UPF objects, but there are no dedicated tools for reading DML/DDN/UPF content beyond listing.

Maintenance

ActivityNo data
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers