Server definition
- Hash
- sha256:a04324a03693bd71aa95dbe383940dda89eba88bd2e6b5f807190ed883a4b730
- What it is
- What a remote MCP server returned when asked what it offers: 17 tools
The blob, as servednamed by its sha256
{
"instructions": "tc39-mcp serves read-only structured data from the TC39 specs\n(ECMA-262 + ECMA-402), tc39/test262, and tc39/proposals. Every\nresponse is deterministic over data pinned to specific upstream\nSHAs.\n\nIndependent project — not an official Ecma International or TC39\npublication.\n\nThis is the hosted Cloudflare Worker deployment — 17 of the\n19 tools (call tools/list for the set). The\n2 stdio-only ones (spec.history, test262.get) are\navailable via the stdio server (npx tc39-mcp).\n\nCommon workflow:\n 1. `spec.about` — call first to see what SHAs and editions the\n server is serving. Returns per-snapshot pin metadata.\n 2. `spec.search` — find a clause from a name or symptom. Hits\n rank aoid-exact > aoid-substring > title > id; follow up with\n `clause.get { id }` to read the full clause. To find clauses by\n what they DO (e.g. which clauses invoke OrdinaryGetOwnProperty),\n pass search_steps: true to also scan algorithm step text — off by\n default since it is slower + noisier.\n 3. `clause.get { id, spec?, edition? }` — full structured clause. A clause id is also a test262\n esid — test262.search { esid: <clause-id> } returns the\n conformance tests for that clause.\n\nEdition semantics. `latest` is spec-aware:\n - On 262, `latest` → current stable release (es2026 today).\n - On 402, `latest` → current stable release (es2026 today).\n - `main` is always the working draft.\n\nHistorical pinning. `main` moves. Pass `at: \"<sha>\"` to query a\nspecific historical snapshot (4-40 hex chars, prefix-matched). The\nhosted Worker retains every `main` SHA it has deployed since\nlaunch; the live snapshot is `at`-less. Released editions like\n`es2026` have no per-SHA history, so `at` doesn't apply — it only\naddresses `main`.\n\nMissing data is never an error. Tools return null, empty arrays, or\na `hint:` field. `source: \"none\"` on `proposal.list` means the\noffline index isn't present in R2 — surface the hint to the user.\n\nMCP prompts (workflow templates) — prefer these when the user wants a\nguided multi-tool sequence. Available prompts: explain-clause,\ncompare-editions, find-and-read, trace-crossrefs, proposal-status,\ntest262-for-feature, cite-reproducibly. Call prompts/list for their\nargument shapes.\n\nAll data is read-only: no tool modifies anything upstream, no tool\nruns user-supplied code. Safe to call freely.",
"tools": [
{
"description": "Fetch a parsed TC39 clause as structured JSON. `spec` selects '262' (default) or '402'. `edition` defaults to 'latest'. `at: '<sha>'` pins to a historical main snapshot (only valid for edition='main'); omit to query the live snapshot.",
"inputSchema": {
"properties": {
"at": {
"description": "Optional historical SHA pin (hex, 4-40 chars). Only valid when edition='main'; released editions have no per-SHA history to address.",
"type": "string"
},
"edition": {
"type": "string"
},
"id": {
"type": "string"
},
"spec": {
"enum": [
"262",
"402"
],
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "clause.get",
"outputSchema": null
},
{
"description": "List parsed spec clauses with optional filters (kind, section prefix, has_algorithm). `spec` selects '262' or '402'. `at: '<sha>'` queries a historical main snapshot.",
"inputSchema": {
"properties": {
"at": {
"type": "string"
},
"edition": {
"type": "string"
},
"has_algorithm": {
"type": "boolean"
},
"kind": {
"type": "string"
},
"limit": {
"type": "number"
},
"section": {
"type": "string"
},
"spec": {
"enum": [
"262",
"402"
],
"type": "string"
}
},
"type": "object"
},
"name": "clause.list",
"outputSchema": null
},
{
"description": "Return the section tree (table of contents) for a parsed (spec, edition). `depth` caps how deep the tree descends (1 = top-level only); `under` limits the tree to descendants of one clause id.",
"inputSchema": {
"properties": {
"depth": {
"type": "number"
},
"edition": {
"type": "string"
},
"spec": {
"enum": [
"262",
"402"
],
"type": "string"
},
"under": {
"type": "string"
}
},
"type": "object"
},
"name": "clause.outline",
"outputSchema": null
},
{
"description": "Fetch one TC39 proposal by slug (exact) or name (case-insensitive).",
"inputSchema": {
"properties": {
"name": {
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
},
"name": "proposal.get",
"outputSchema": null
},
{
"description": "List TC39 proposals from the static index (tc39/proposals). Filter by spec ('262'|'402'), stage ('0'|'1'|'2'|'2.7'|'3'|'finished'|'inactive'|'active'), champion (substring), or contains (name/slug substring).",
"inputSchema": {
"properties": {
"champion": {
"type": "string"
},
"contains": {
"type": "string"
},
"limit": {
"type": "number"
},
"spec": {
"enum": [
"262",
"402"
],
"type": "string"
},
"stage": {
"type": "string"
}
},
"type": "object"
},
"name": "proposal.list",
"outputSchema": null
},
{
"description": "Self-description of this MCP server: package name + version, per-snapshot pin metadata (sha, fetched_at, biblio_commit, clause_count) for every supported (spec, edition), plus test262 + proposals index headers when present.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "spec.about",
"outputSchema": null
},
{
"description": "For a clause id, return its outgoing references (clauses it cites) and/or incoming references (clauses that cite it — the back-reference index the parse alone doesn't expose). The reverse index is AOID-densified from step text. `direction`: 'in' | 'out' | 'both' (default). Outgoing also carries an `external` category: the clause's citations to external specs (Unicode, IETF, WHATWG) as resolvable URLs. Set `include_cross_spec: true` to also resolve outgoing references from ECMA-262 → ECMA-402 (or vice versa).",
"inputSchema": {
"properties": {
"direction": {
"enum": [
"in",
"out",
"both"
],
"type": "string"
},
"edition": {
"type": "string"
},
"id": {
"type": "string"
},
"include_cross_spec": {
"type": "boolean"
},
"limit": {
"type": "number"
},
"spec": {
"enum": [
"262",
"402"
],
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "spec.crossrefs",
"outputSchema": null
},
{
"description": "Clause-level diff of one clause across two editions of a spec. Reports identical / modified / added / removed plus a field-level breakdown (title, signature, step count, reworded step indices, notes, crossrefs). `from` defaults to the latest stable release, `to` to main.",
"inputSchema": {
"properties": {
"from": {
"type": "string"
},
"id": {
"type": "string"
},
"spec": {
"enum": [
"262",
"402"
],
"type": "string"
},
"to": {
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "spec.diff",
"outputSchema": null
},
{
"description": "Run spec.search across both ECMA-262 and ECMA-402 in one call and interleave hits by score. Each hit is tagged with the spec it came from. Use it when you don't know which spec defines a symbol. `search_steps` also matches algorithm step text.",
"inputSchema": {
"properties": {
"limit": {
"type": "number"
},
"query": {
"type": "string"
},
"search_steps": {
"type": "boolean"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "spec.global_search",
"outputSchema": null
},
{
"description": "Query grammar productions captured from the spec's `<emu-grammar>` blocks. `{ nonterminal }` returns every production for that non-terminal (exact match); `{ contains }` filters by RHS / name substring; neither lists all non-terminals + their production counts. `include_sdo` folds in SDO-attached productions (off by default).",
"inputSchema": {
"properties": {
"contains": {
"type": "string"
},
"edition": {
"type": "string"
},
"include_sdo": {
"type": "boolean"
},
"limit": {
"type": "number"
},
"nonterminal": {
"type": "string"
},
"spec": {
"enum": [
"262",
"402"
],
"type": "string"
}
},
"type": "object"
},
"name": "spec.grammar",
"outputSchema": null
},
{
"description": "Index Syntax-Directed Operations by the grammar production they're defined on. `by: 'production'` (default) groups SDOs under each production; `by: 'sdo'` groups productions under each SDO title. `filter` narrows to keys containing a substring (case-insensitive).",
"inputSchema": {
"properties": {
"by": {
"enum": [
"production",
"sdo"
],
"type": "string"
},
"edition": {
"type": "string"
},
"filter": {
"type": "string"
},
"limit": {
"type": "number"
},
"spec": {
"enum": [
"262",
"402"
],
"type": "string"
}
},
"type": "object"
},
"name": "spec.sdo_index",
"outputSchema": null
},
{
"description": "Search the parsed spec by clause id / aoid / title (+ step text with `search_steps`). Aoid-exact ranks first. `at: '<sha>'` searches a historical main snapshot.",
"inputSchema": {
"properties": {
"at": {
"type": "string"
},
"edition": {
"type": "string"
},
"limit": {
"type": "number"
},
"query": {
"type": "string"
},
"search_steps": {
"type": "boolean"
},
"spec": {
"enum": [
"262",
"402"
],
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "spec.search",
"outputSchema": null
},
{
"description": "List the live (spec, edition, sha, fetched_at) snapshots the hosted Worker is serving from R2. Filter by `spec` ('262'|'402') or `edition` (e.g. 'main', 'es2026'). Historical SHA-pinned copies are reachable via `at:` on clause.get / spec.search but aren't enumerated here.",
"inputSchema": {
"properties": {
"edition": {
"type": "string"
},
"spec": {
"enum": [
"262",
"402"
],
"type": "string"
}
},
"type": "object"
},
"name": "spec.snapshots",
"outputSchema": null
},
{
"description": "Resolve spec notation like `[[Prototype]]` (internal slot), `%Object.prototype%` (well-known intrinsic), or `~number~` (sigil enum): return clauses that mention or define it, ranked by occurrence with a bump for definition-y sections.",
"inputSchema": {
"properties": {
"edition": {
"type": "string"
},
"limit": {
"type": "number"
},
"notation": {
"type": "string"
},
"spec": {
"enum": [
"262",
"402"
],
"type": "string"
}
},
"required": [
"notation"
],
"type": "object"
},
"name": "spec.symbol_resolve",
"outputSchema": null
},
{
"description": "List or fetch parsed `<emu-table>` content. `{ id }` returns exactly that table (full columns + rows); otherwise list table summaries, optionally narrowed by a `filter` substring over the caption or id.",
"inputSchema": {
"properties": {
"edition": {
"type": "string"
},
"filter": {
"type": "string"
},
"id": {
"type": "string"
},
"limit": {
"type": "number"
},
"spec": {
"enum": [
"262",
"402"
],
"type": "string"
}
},
"type": "object"
},
"name": "spec.tables",
"outputSchema": null
},
{
"description": "Enumerate the well-known intrinsics in a spec with their probable defining clauses. Driven from the canonical §6.1.7.4 WKI table when present (ECMA-262), else a `%X%` prose scan (e.g. ECMA-402). `filter` narrows by bare-name substring.",
"inputSchema": {
"properties": {
"edition": {
"type": "string"
},
"filter": {
"type": "string"
},
"limit": {
"type": "number"
},
"spec": {
"enum": [
"262",
"402"
],
"type": "string"
}
},
"type": "object"
},
"name": "spec.well_known_intrinsics",
"outputSchema": null
},
{
"description": "Search the tc39/test262 conformance suite from its indexed front-matter. `query` AND-matches whitespace tokens (case-insensitive) across each test's description + path; `esid` prefix-matches the front-matter esid. Returns ranked hits (path, GitHub url at the indexed SHA, esid, description, features, flags), capped at `limit` (default 20). Supply at least one of `query` / `esid`.",
"inputSchema": {
"properties": {
"esid": {
"type": "string"
},
"limit": {
"type": "number"
},
"query": {
"type": "string"
}
},
"type": "object"
},
"name": "test262.search",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:a04324a03693bd71aa95dbe383940dda89eba88bd2e6b5f807190ed883a4b730 | sha256sum