Skip to main content
Glama

wasm-mcp

Model Context Protocol server for the WebAssembly core specification. SHA-pinned, read-only, deterministic — safe to host as a public unauthenticated endpoint.

Not affiliated with, endorsed by, or sponsored by the W3C WebAssembly Community Group or Working Group.

What it gives you

  • spec_version — the pinned upstream commit and package version.

  • instruction_get — opcode bytes, category, introducing version, stack type signature, validation + execution prose anchors / URLs, and trap conditions (traps + can_trap), by mnemonic (i32.add) or binary opcode (0x6a).

  • instruction_list — enumerate, filterable by category (numeric, vector, reference, parametric, variable, table, memory, control, ref, i31, struct, array, extern), introducing version, or prefix.

  • instruction_search — ranked free-text search across mnemonics, categories, and opcodes.

  • type_get — value types (number / vector / reference) and type forms (functype, limits, memtype, …) with defining prose.

  • section_get — one spec clause by id / anchor (structure, validation, execution, binary, text), with prose, cross-references, SpecTec formal-rule references, and the rendered URL.

  • section_list — navigate the clause tree by area or anchor prefix.

  • spec_search — full-text search across anchors, titles, and prose.

  • proposal_list — WebAssembly proposals and their phases (from the pinned WebAssembly/proposals repo), filterable by status, phase, champion, or affected spec.

section_get, section_list, and spec_search take a spec argument covering all three specs in the WebAssembly/spec repo: core (default), js-api (the JavaScript embedding API), and web-api (Web-platform integration). The instruction and type tools are core-only.

Related MCP server: speclib-mcp

Contract

Every tool is:

  • Read-only. No state mutation, no writes outside an optional local cache.

  • Deterministic. Same input → same output, over the pinned spec commit recorded in vendor/PINNED.txt.

  • No execution. Never compiles, validates-by-running, instantiates, or runs any WebAssembly or arbitrary code. Validation and reduction rules are returned as data.

  • No auth, no secrets, no PII. Usable anonymously.

  • No network at request time. All spec data is fetched and indexed at build time and baked into the package.

Install (stdio, local)

npx wasm-mcp

Wire it into any MCP client by adding the server to its config (the launch command is the same everywhere; only the config file differs):

{
  "mcpServers": {
    "wasm": {
      "type": "stdio",
      "command": "npx",
      "args": ["wasm-mcp"]
    }
  }
}

Hosted Worker

The Cloudflare Worker in worker/ exposes the same tool surface as the stdio package over streamable HTTP at a single unauthenticated endpoint, rate-limited per source IP (30 req / 60 s):

https://mcp.xyzzylabs.ai/wasm/mcp

GET /wasm/health reports status and the pinned SHAs; GET /wasm/privacy states the anonymous, no-storage posture. All spec data is bundled into the Worker, so it does pure in-memory lookups — no storage, no network at request time.

Releases & data refresh

The pinned commits live in vendor/PINNED.txt and are reported by spec_version. A scheduled GitHub Actions workflow (refresh.yml) SHA-diffs the upstream repos daily; when a pin moves it re-pins, bumps the patch version, and tags a release, which publishes the npm package (release.yml) and redeploys the Worker (deploy-worker.yml).

Maintainers:

  • npm publish uses Trusted Publishing (OIDC) — no NPM_TOKEN. Configure it once on npmjs.com (wasm-mcp → Settings → Trusted Publisher → GitHub Actions: org xyzzylabs, repo wasm-mcp, workflow release.yml).

  • Worker deploy needs CLOUDFLARE_API_TOKEN + CLOUDFLARE_ACCOUNT_ID, stored as environment secrets on the cloudflare GitHub Environment (not repo-wide) with a main + v* deployment rule — see Securing the deploy credentials.

  • For the refresh workflow's tag push to trigger release + deploy, add a WORKFLOW_PAT PAT (contents: write + workflows) — without it, refresh still re-pins and tags, but you run release / deploy manually. (Same secret name tc39-mcp uses, so one PAT — or an xyzzylabs org secret — can serve both repos.)

License

MIT — see LICENSE.

Available Tools

9 tools
instruction_getGet instructionA
Read-only
Inspect

Fetch one WebAssembly instruction by mnemonic (i32.add, br_if) or binary opcode (0x6a, 0xfd 0x89 0x02) as structured JSON: opcode bytes, category, introducing version, stack type signature, validation/execution prose anchors + spec URLs, and traps — the runtime conditions under which it traps (each with the spec's canonical trap name; empty + can_trap: false for instructions that never trap). Provide mnemonic or opcode (mnemonic wins if both match).

ParametersJSON Schema
NameRequiredDescriptionDefault
opcodeNoBinary opcode as hex bytes, e.g. `0x6a`, `6a`, or multi-byte `0xfd 0x89 0x02`. Exact match. Used when `mnemonic` is absent or doesn't match.
versionNoWebAssembly spec version to query. `latest` (default) is the current served version; `main` is the upstream working draft.latest
mnemonicNoInstruction mnemonic, e.g. `i32.add`, `br_if`, `local.get`. Case-insensitive. Exact match.

TDQS

A4.6/5.0
Behavior4/5

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

The annotations already declare readOnlyHint=true, and the description adds value by detailing the output fields (opcode bytes, category, version, traps, etc.). It does not contradict annotations. However, it does not discuss authentication or rate limits beyond what is implied by 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 two sentences with no wasted words. The main purpose is front-loaded, and details about output fields follow. Each sentence adds value.

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?

Despite no output schema, the description enumerates all expected output fields (opcode bytes, category, version, stack signature, validation/execution prose anchors, spec URLs, traps). This is complete for a single-instruction fetch tool with 3 optional parameters.

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

Parameters5/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 all parameters well. The description adds extra semantics: 'mnemonic wins if both match' and clarifies opcode format (hex bytes). This provides useful context beyond 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?

The description explicitly states the tool fetches one WebAssembly instruction by mnemonic or binary opcode, clearly distinguishing it from siblings like instruction_list (lists all) and instruction_search (searches). The verb 'Fetch' and resource 'instruction' are specific.

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 description provides clear disambiguation (mnemonic wins if both match) and explains when opcode is used. However, it does not explicitly state when not to use this tool or list alternatives beyond the sibling tools, which is a minor gap.

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

instruction_listList instructionsA
Read-only
Inspect

Enumerate WebAssembly instructions with optional filters: category (control, numeric, parametric, variable, table, memory, ref, i31, struct, array, extern, vec), introduced_in (1.0 | 2.0 | 3.0), prefix (mnemonic prefix like i32.), and can_trap (only trapping / only non-trapping instructions). Returns lightweight rows (incl. can_trap) sorted by opcode; follow up with instruction_get for full detail incl. trap conditions.

ParametersJSON Schema
NameRequiredDescriptionDefault
prefixNoFilter to mnemonics starting with this prefix, e.g. `i32.` or `v128.`. Case-insensitive.
versionNoWebAssembly spec version to query. `latest` (default) is the current served version; `main` is the upstream working draft.latest
can_trapNoFilter by trapping behavior: `true` keeps only instructions that can trap at runtime, `false` keeps only those that never trap. See instruction_get for the per-instruction trap conditions.
categoryNoFilter by instruction category: control, numeric, parametric, variable, table, memory, ref, i31, struct, array, extern, vec (vector/SIMD).
introduced_inNoFilter to instructions introduced in this WebAssembly version: `1.0`, `2.0`, or `3.0`.

TDQS

A4.7/5.0
Behavior5/5

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

The description discloses that results are sorted by opcode and includes the can_trap field, which adds behavioral context beyond the readOnlyHint annotation. It also references instruction_get for trap conditions, managing expectations.

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 concise, consisting of two well-structured sentences. Every element earns its place, with no redundant or extraneous text.

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?

The description adequately covers the tool's functionality, return format (lightweight rows, sorted, includes can_trap), and relationship to sibling tools. Given no output schema, it provides sufficient information for an agent to understand what to expect.

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?

With 100% schema description coverage, the baseline is 3. The description adds value by explaining the purpose of each filter, giving an example for prefix, and noting the return includes can_trap, thus providing meaningful context beyond schema field names.

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 the specific verb 'Enumerate' with the resource 'WebAssembly instructions' and lists all optional filters, clearly defining the tool's scope. It distinguishes from the sibling 'instruction_get' by noting that tool provides full 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?

The description states the tool returns lightweight rows and suggests following up with instruction_get for full detail, providing clear usage guidance. However, it could explicitly mention when not to use this tool versus alternatives like instruction_search.

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

proposal_listList WebAssembly proposalsA
Read-only
Inspect

List WebAssembly proposals and their phases from the pinned WebAssembly/proposals repository. Filter by status (phase-0…phase-5, finished, inactive), phase (0–5), champion substring, affects (finished proposals touching core / js-api / web-api), or contains (name/champion substring). Each row carries name, status, phase, champion, affected_specs, spec_version, and the proposal URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
phaseNoFilter by numeric phase 0–5 (active + finished proposals carry a phase).
statusNoFilter by lifecycle status: `phase-0`…`phase-5`, `finished` (merged into the spec), or `inactive`.
affectsNoFilter to finished proposals affecting a given spec: `core`, `js-api`, or `web-api`.
championNoChampion substring, case-insensitive.
containsNoName or champion substring, case-insensitive.

TDQS

A4.3/5.0
Behavior4/5

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

The description aligns with the readOnlyHint annotation and adds value by detailing the source repository and the fields returned per row. No contradictions.

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 concise, front-loaded with the main purpose, and every sentence provides necessary information without waste.

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?

Despite lacking an output schema, the description enumerates the fields in each row, making the return value clear. All filter options are explained, ensuring completeness.

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% with individual parameter descriptions. The tool description repeats and groups these parameters but does not add substantial new meaning beyond what the schema provides, resulting in a baseline score.

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 tool lists WebAssembly proposals and their phases from a specific repository, with explicit filtering options. This distinguishes it from sibling tools focused on instructions, types, sections, and specs.

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 description provides clear context on what the tool does and how to filter, but it does not explicitly state when to use this tool versus alternatives. However, the sibling tools are sufficiently distinct in purpose.

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

section_getGet spec sectionA
Read-only
Inspect

Fetch one spec clause by id or anchor, across core / js-api / web-api (set spec). For core: syntax-numtype, valid-unreachable, binary-instr, … For the embedding specs: modules, memories, streaming-modules, … Matches the rendered spec's stable fragment ids. Returns the clause title, cleaned prose, cross-references, the SpecTec formal_refs it cites (core), and the rendered URL. Core validation/execution clauses are SpecTec-generated: prose may be terse, but formal_refs + url point to the formal rule.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesClause id or anchor. For `core`: `syntax-numtype`, `valid-unreachable`, `binary-instr`, … For `js-api` / `web-api`: `modules`, `memories`, `streaming-modules`, … These match the stable fragment ids in the rendered spec.
specNoWhich WebAssembly spec to query: `core` (default; instructions, types, validation, execution, formats), `js-api` (JavaScript embedding), or `web-api` (Web platform integration).core
versionNoWebAssembly spec version to query. `latest` (default) is the current served version; `main` is the upstream working draft.latest

TDQS

A4.4/5.0
Behavior4/5

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

The description aligns with the `readOnlyHint` annotation by indicating a fetch operation. It adds valuable context about the nature of core validation/execution clauses being SpecTec-generated with terse prose but pointing to formal rules via `formal_refs` and URL. 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 adequately concise and front-loaded with the core purpose. It includes useful examples and return information without unnecessary fluff. A minor improvement could be slightly shorter sentences, but overall it is well-structured.

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?

Given no output schema, the description sufficiently outlines what the tool returns (clause title, cleaned prose, cross-references, formal_refs, rendered URL). It covers the main behavioral expectations and output structure, making it complete for the agent to understand the tool's functionality.

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

Parameters5/5

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

The input schema has 100% coverage with descriptions for all three parameters. The tool description adds substantial meaning beyond the schema by providing concrete examples of valid `id` values (e.g., `syntax-numtype`, `valid-unreachable`) and explaining that these match stable fragment IDs in the rendered spec.

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 the specific verb 'Fetch' and resource 'spec clause by id or anchor', clearly stating its purpose. It distinguishes itself from sibling tools like `section_list` and `spec_version` by focusing on fetching a single clause by identifier, not listing or searching.

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 description provides clear context on when to use this tool: to retrieve a specific clause by its id/anchor across different specs (core, js-api, web-api). It implicitly differentiates from siblings like `section_list` by focusing on individual clause retrieval, though it does not explicitly state when not to use it.

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

section_listList spec sectionsA
Read-only
Inspect

Enumerate spec clauses for navigation, across core / js-api / web-api (set spec). Filter by source path (core: intro, syntax, valid, exec, binary, text, appendix, or sub-paths like syntax/types), anchor_prefix, titled_only, and max_level. Returns lightweight rows {id, anchors, title, level, path, url}; follow up with section_get.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoFilter to a source path / prefix. Top-level areas: `intro`, `syntax` (structure), `valid` (validation), `exec` (execution), `binary`, `text`, `appendix`. Sub-paths like `syntax/types` also work.
specNoWhich WebAssembly spec to query: `core` (default; instructions, types, validation, execution, formats), `js-api` (JavaScript embedding), or `web-api` (Web platform integration).core
versionNoWebAssembly spec version to query. `latest` (default) is the current served version; `main` is the upstream working draft.latest
max_levelNoCap heading depth (1 = page titles only). Anchor-only blocks are unaffected.
titled_onlyNoDrop anchor-only content blocks (keep only clauses with a heading).
anchor_prefixNoFilter to clauses whose id/anchor starts with this prefix, e.g. `syntax-`, `valid-`, `exec-`.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true. Description adds that it returns lightweight rows for navigation, which is consistent. It does not contradict annotations. The description adds context about the return structure and filtering, but does not mention rate limits or auth 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?

Two sentences that immediately convey the core action and key parameters. No wasted words. The structure is front-loaded with the main purpose.

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?

Given 6 parameters with full schema coverage, no output schema, the description provides a complete picture: what it does, key filters, and the return structure. It also suggests a follow-up tool, which enhances completeness.

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% with parameter descriptions. The description adds value by listing specific values for path and spec, and summarizing the filter parameters. This goes beyond the schema's individual descriptions.

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?

Clearly states it enumerates spec clauses for navigation, specifying the spec parameter and filters. Distinguishes from sibling tools like section_get (which retrieves a single section) and instruction_list. The verb 'enumerate' plus 'for navigation' gives a specific purpose.

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?

Explicitly mentions the spec parameter and suggests follow-up with section_get. Provides a clear usage context for navigation. Does not explicitly state when not to use, but the follow-up suggestion implies appropriate use.

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

spec_versionPinned spec versionA
Read-only
Inspect

Return self-description of this MCP server: package name + version, plus the pinned upstream commit SHA for every spec snapshot baked into the package. Use this first when citing the spec, or to verify the server's freshness and reproducibility.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already provide readOnlyHint=true. Description adds value by detailing the return content (package info, commit SHAs) and purpose of reproducibility verification.

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?

Two sentences, efficiently packed with purpose and usage guidance. No wasted words.

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 no parameters, no output schema, and good annotations, the description fully covers what the agent needs: purpose, usage context, and return value.

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?

No parameters, so baseline is 4. Description does not need to explain parameters.

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 it returns self-description: package name, version, and pinned upstream commit SHA. It contrasts with sibling tools that fetch specific content like instructions or types.

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?

Explicitly instructs to use this tool first when citing the spec or verifying freshness and reproducibility. Does not list when not to use, but context is clear.

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

type_getGet typeA
Read-only
Inspect

Look up a WebAssembly type or type form by name: concrete value types (i32, i64, f32, f64, v128, funcref, externref, …) or type forms (functype, limits, memtype, tabletype, globaltype, reftype, valtype, rectype, heaptype, …). Returns its classification, sibling members for category types, defining clause prose, SpecTec formal-rule references, and the rendered spec URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesType or type-form name. Concrete value types: `i32`, `i64`, `f32`, `f64`, `v128`, `funcref`, `externref`, … Type forms: `functype`, `limits`, `memtype`, `tabletype`, `globaltype`, `reftype`, `valtype`, `rectype`, `heaptype`, … Case-insensitive, exact match.
versionNoWebAssembly spec version to query. `latest` (default) is the current served version; `main` is the upstream working draft.latest

TDQS

A4.4/5.0
Behavior4/5

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

Annotations provide readOnlyHint=true, and the description adds behavioral context beyond annotations: it details the return components (classification, sibling members, clause prose, SpecTec references, spec URL). This gives the agent a good understanding of what to expect without contradicting the read-only nature.

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 a single sentence that efficiently packs the core purpose, examples, and return types. Every phrase adds value, and there is no redundancy.

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 tool with 2 parameters, 100% schema coverage, no output schema, and readOnlyHint annotation, the description adequately covers what the tool does and returns. It does not explain error behavior (e.g., if name is not found), but given the simplicity and good schema annotations, this is a minor gap.

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 description coverage is 100%, so baseline is 3. The description adds value by providing examples of accepted values for the 'name' parameter (e.g., 'i32', 'functype') and noting case-insensitivity, which goes beyond the schema's basic 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 uses a specific verb 'look up' and clearly identifies the resource as 'WebAssembly type or type form by name'. It lists concrete value types and type forms, and specifies the outputs (classification, sibling members, defining clause prose, SpecTec references, spec URL), distinguishing it from sibling tools that focus on instructions, sections, or proposals.

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 description states when to use the tool (to look up a type or type form) and what it returns. However, it does not explicitly state when not to use it or provide direct comparison with sibling tools such as instruction_get or spec_search. The context signals indicate siblings, but the description lacks 'when not to use' guidance.

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. 9 tool updatesv0.2.22
    • First observedinstruction_get
    • First observedinstruction_list
    • First observedinstruction_search
    • First observedproposal_list
    • First observedsection_get
    • First observedsection_list
    • First observedspec_search
    • First observedspec_version
    • First observedtype_get

TDQS

A4.5/5.0

Scored across 9 tools

Disambiguation5/5

Each tool targets a distinct aspect: server metadata, instructions (with clear get/list/search separation), type lookup, spec sections (get/list/search), and proposals. No overlapping purposes; an agent can easily distinguish them.

Naming Consistency4/5

Most tools follow a noun_verb pattern (e.g., instruction_get, type_get, section_list). The exception is spec_version (noun_noun), but it's a single outlier and still readable. Overall pattern is predictable.

Tool Count5/5

9 tools is well-scoped for a WebAssembly spec reference server. Each tool provides unique functionality without being too few or too many, covering instructions, types, sections, and proposals.

Completeness5/5

The tool set covers the core reference needs: instruction lookup/enumeration/search, type lookup, spec section navigation and search, and proposal listing. There are no obvious gaps for the server's purpose of providing spec information.

Maintenance

ActivityActive
ResponsivenessWithin a week

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    MCP Server for accessing W3C/WHATWG/IETF web specifications. Provides AI assistants with access to official web standards data including specifications, WebIDL definitions, CSS properties, and HTML elements.
    11
    355
    4
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that enables AI agents to search, discover, and retrieve technical specifications from a SpecLib instance. It provides tools for full-text search, scope listing, and reading specs as markdown content.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server for exploring the ECMAScript specification and its implementation, enabling semantic search of spec sections, JavaScript execution in engine262, and access to a knowledge graph linking spec sections to implementation functions.
    8
    ISC