Repository navigation
docs(mcp): recorded tool arguments for every served server, parser prose, and full generator-input dispatch - #441
Merged
Merged
Conversation
… the API page raw-unreal and ueformat held 27 manifest entries and no task guide, so every one of them was an API heading with no instructions. The new guide names only real exports and links to no file that does not exist; a spec now fails the build when a guide or recipe names an export the package does not ship.
The recorded surfaces listed 59 tool names and no arguments, so the docs could not answer what a tool takes. The schemas come from the same live tools/list response the capture script already read, and a spec compares both in-repo servers' snapshots against what they serve.
The Unreal guide wrote `new DefaultLoadingManager()` for a three.js export that is an instance, ran its CLI through `npx` against a package that is not on the registry, called `INVALID_RAW_MESH` proof of a pre-UE4.18 source model when the code throws it for four different reasons, and lost its trailing newline. The guide-imports guard cannot see any of that: every symbol it names is real. So two checks now read the guide's own text - one typechecks each snippet against the real packages, the other runs the loader line the guide writes through the committed .uasset fixture. Both go red on the old line. The asset MCP snapshot carried 46 tool names and no arguments, so the recipes restated arguments by hand and one of them, polyhaven_import_model, names a tool the pinned server does not serve. The capture script now records each tool's description and input schema from the same live tools/list it already read, the recipe describes the workflow the served tools actually support, and a check fails any recipe that names a `<server>_<action>_<noun>` no recorded surface serves. MetaHuman had a package README and no guide, so it was reachable from the API page but not from the guides navigation. docs/guides/metahuman.md carries the task walkthrough, and the two snippet checks cover it too.
The sculpt snapshot listed five tool names and no arguments, so the site could not say what any of them takes. The capture script now drives both published servers in the repository's dependency pins — asset and sculpt — and records each tool's description and input schema from the same live tools/list it already read. Nothing is written by hand.
The Unreal guide claimed a registry lookup it never made, and read a
`licenseeVersion` the parser does not model as a date. It now says the blob
uses a serialized layout this parser does not model. The MetaHuman guide
disposed the handle while the scene still held the before-render callback that
calls `update()`, so `removeFace()` now comes first.
Three gates were weaker than they looked. `guide-snippets` compared an unscoped
import against a scoped manifest name, so it never found the package it meant.
`guide-example` stood a plain object in for `DefaultLoadingManager`, which a
`new` on a real instance would have caught. `mcp-tool-schemas` asserted
`not.toBe("")`, which `undefined` passes.
A public export, an export map, a template manifest or a generator module all move the manifest the site's API reference renders, and the site regenerates it at build time now, so each has to reach the redeploy. The new spec derives the path list from scripts/build-capability-manifest.ts and also proves the freshness gate stays required for a change of each kind.
…s branch touched The repo-wide biome gate failed on six files this branch wrote: the four recorded *-mcp-tools.json snapshots, guide-imports.spec.ts and capture-blender-mcp-tools.ts. Repaired with biome itself; the snapshots parse to identical values, so the site publishes the same schemas.
jonit-dev
marked this pull request as ready for review
October 5, 2026 03:34
… test finds it The guide check ran from the package directory in CI, where the cwd-relative path missed the repository copy and the suite failed to load. Resolve the guide the way packages/physics already resolves its own documentation.
9 tasks done
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
TL;DR — PRD-534 phase 2 and 4, engine half. The site's docs are rendered from this repository at build time, so this branch is where their depth comes from: task prose for the two parsers nothing explained, the arguments and schemas of every served MCP tool recorded from a live
tools/list, and a deploy dispatch that now fires for every input the capability-manifest generator reads. Draft for review; nothing here is deployed.Why
threenative.com/docsis built fromdocs/guides/*.mdand from the recorded MCP surfaces beside the manifest, so an API page can only be as deep as what is committed here. Three gaps:raw-unrealandueformathad no task prose, the MCP page could not answer what a tool takes, and the site's redeploy dispatch missed most of the generator's real inputs.What changed
docs/guides/unreal-assets.mdcovers choosing between the two parsers, loading local/browser/native bytes, layouts, codecs, limits and the real failure codes;metahuman.mdis new and listed in the guides README.inputSchemasanddescriptionsare recorded for every served tool, taken from the same livetools/listthe capture script reads. 59 tools across four surfaces, each with a schema and a description.api.mdstates the discovery loop, the relevance floor, the result caps and the JSON-RPC error codes the servers actually return.site-docs.ymlnow dispatches the site forpackages/*/src/**,packages/create-threenative/templates/**,packages/engine-mcp/src/**, the template closure, the manifest itself and the six modules the generator imports.capability-site-docs.spec.tsderives that list from the generator and fails when an import is uncovered.style: the six files this branch wrote now satisfy the repo-wide biome gate. The four recorded snapshots parse to identical values.Checks, run in the lane
tsx scripts/check-doc-links.ts— 2399 relative links across 1231 files, no missing target.vitest runover the doc, guide, capability-manifest and CI specs — 72 tests, and 189 for the generation/CI selection.tsc --noEmitexit 0,biome checkexit 0.primary-docs.spec.ts,evidence-budget.spec.tsandverify-golden-path.spec.tsneed a fullpnpm installand a browser; they are not runnable in this worktree and pass in the engine primary, which is the control for "environment, not change".Dependency and blocker
wrangler deployin the site's deploy job fails at the Cloudflare zone route step (No access to the specified resource). Zone Workers Routes Edit plus DNS Edit and Zone Read on zonef8da484aa6eb33895482a6cd21fc4623is the unblock. No production action is taken here.ci.ymlgives drafts nothing), so every number above is a local run in the lane, not a CI check. Nothing here is green in CI until it is marked ready for review.