dev.polyfork/polyfork

MCPcommunitylive
v1.0.0dev.polyforkUnknownUpdated 1mo ago

Low-poly 3D models and kits for three.js and game engines: search, match, remix, preview.

Endpoint healthlive
checked 9 days ago · 918ms
100% of the last 5 checks reached this endpoint
Works in
ClaudeCursorCopilotChatGPTGemini

Inferred from the transports this listing declares (streamable-http). A client not listed here hasn’t been ruled out — it just isn’t something Forge can confirm.

Automatically indexed from public sources. Not yet verified by the developer on Forge.Claim this listing →
1mo agoLast update
Package
Authordev.polyfork
LicenseUnknown
Version1.0.0
Sourcemcp-registry
Trust Status
B
60/100Good
✓Listed in Forge index+10/10
—Publisher identity verified+0/30
→ Publisher: this listing has no repository on file, so `forge publish` cannot verify ownership automatically. Use "Claim this listing" above — Forge reviews these by hand.
—Domain verification+0/10
→ Not currently available for this listing type — the domain-verification check only runs for npm-backed packages today, so this row cannot be earned here yet regardless of what's hosted at the domain.
✓Prompt-injection scan · clean+30/30
✓Obfuscation / exfil scan · clean+20/20
StatusCommunity-indexed
PublisherUnverified
SignatureUnsigned
Domain—
Provenance—
DependenciesNot audited
Tool surface12 tools · none privileged
Security scan✓ Cleanvlive · 9d agoHow well does this scan work?
EvalsNone
IndexedAug 15, 2026

Verification confirms publisher identity (repo ownership), not code safety. The security scan covers known CVEs and suspicious install scripts.

Tools

12 tools · none privileged
Observed live from the vendor's endpoint9d ago

Read from a real MCP initialize → tools/list handshake against the declared endpoint. No tool was ever invoked — tools/list is the read-only introspection call the protocol defines for this. It reflects what the server advertised at that moment; a hosted endpoint is not pinned to any version and can change without notice.

  • https://polyfork.dev/mcp12 tools · 918ms
search_assetsSearch the Polyfork catalogue of low-poly 3D assets for three.js. Use this whenever the user needs a model for a scene, game or site. Filter by triangle budget when the target is mobile or performance-sensitive. Results mix FREE and PRO assets: each carries `free` and `plan`. Paid assets are not so…

Search the Polyfork catalogue of low-poly 3D assets for three.js. Use this whenever the user needs a model for a scene, game or site. Filter by triangle budget when the target is mobile or performance-sensitive. Results mix FREE and PRO assets: each carries `free` and `plan`. Paid assets are not so…

ParameterTypeDescription
qstringwhat to look for, e.g. "windmill" or "sports car"
classstring—
freebooleanonly free assets
kitstringrestrict to one kit id
ikstringonly models that SOLVE rather than pose: "legs" walks with its feet finding your ground and staying planted, "arm" is a rooted boom whose tip you can aim, "1"…
max_trianglesintegertriangle budget ceiling; the usual constraint for mobile
min_trianglesinteger—
max_price_usdintegerDEPRECATED, per-asset prices are retired. Use free=1 for free-only
sortstring—
limitintegerdefault 20, max 50
compactbooleanshortlisting rows only (id, title, class, triangles, size_m, capability flags). Use this whenever you are surveying rather than choosing — a full-detail result…
get_assetFull detail for one asset: real-world size in metres, triangle count, palette, animatable parts, renders you can open to SEE it, and the correct download URLs for the caller. A model with has_ik true also returns a measured `gait` or `arm` block: segment lengths, foot offsets, phase order, step len…

Full detail for one asset: real-world size in metres, triangle count, palette, animatable parts, renders you can open to SEE it, and the correct download URLs for the caller. A model with has_ik true also returns a measured `gait` or `arm` block: segment lengths, foot offsets, phase order, step len…

ParameterTypeDescription
id*stringasset id, e.g. windmill-3aad49
find_matchingGiven one asset, return assets that BELONG IN A SCENE WITH IT: same kit first, then shared palette, then compatible real-world scale, spread across classes so you get a house, a tree and a barrel rather than eight houses. Use this to turn a single pick into a scene. Returns a ready preview URL.

Given one asset, return assets that BELONG IN A SCENE WITH IT: same kit first, then shared palette, then compatible real-world scale, spread across classes so you get a house, a tree and a barrel rather than eight houses. Use this to turn a single pick into a scene. Returns a ready preview URL.

ParameterTypeDescription
id*string—
limitintegerdefault 8, max 30
max_trianglesintegertriangle budget ceiling; applies to the preview scene as well
min_trianglesinteger—
freebooleanonly free assets
get_variantTurn a plain-words request ("oak cask", "taller", "five sails") into a ready call. `want` is matched against this asset's KNOB NAMES and OPTION VALUES, not against colour vocabulary: use the words from its -params.json into a ready createAsset() call for a remixable asset, plus a GLB URL of that ex…

Turn a plain-words request ("oak cask", "taller", "five sails") into a ready call. `want` is matched against this asset's KNOB NAMES and OPTION VALUES, not against colour vocabulary: use the words from its -params.json into a ready createAsset() call for a remixable asset, plus a GLB URL of that ex…

ParameterTypeDescription
id*string—
want*stringthe change in the user's own words
lookobjectRestyle the mesh, independently of any knob. Deliverable families: palette = reduced|gameboy|pico8|cga|mono; shading = toon|unlit. Example {"palette":"gameboy"…
preview_sceneCompose assets into a scene and return a URL the user can OPEN and orbit. Use it instead of handing over a block of three.js the user cannot run. Works with paid assets too: they render from a public preview, so the scene looks finished whether or not the user owns them. The result says what the sc…

Compose assets into a scene and return a URL the user can OPEN and orbit. Use it instead of handing over a block of three.js the user cannot run. Works with paid assets too: they render from a public preview, so the scene looks finished whether or not the user owns them. The result says what the sc…

ParameterTypeDescription
ids*arrayasset ids, in any order; up to 24
list_kitsKits are coherent sets built to one palette and one grid. Reach for a kit when the user is building a whole environment rather than looking for one object. Each carries a status: "published" means every planned part is built, "filling-up" means parts are still landing — and the parts of a filling-u…

Kits are coherent sets built to one palette and one grid. Reach for a kit when the user is building a whole environment rather than looking for one object. Each carries a status: "published" means every planned part is built, "filling-up" means parts are still landing — and the parts of a filling-u…

No input schema was published for this tool.

get_kitEvery published part of one kit, with the same detail get_asset gives, so you can compose a whole scene from one call. Works on a kit that is still FILLING UP: you get the parts that exist today. A filling-up kit is not sold as a bundle yet, so recommend its parts rather than the kit — the free one…

Every published part of one kit, with the same detail get_asset gives, so you can compose a whole scene from one call. Works on a kit that is still FILLING UP: you get the parts that exist today. A filling-up kit is not sold as a bundle yet, so recommend its parts rather than the kit — the free one…

ParameterTypeDescription
id*stringkit id, from list_kits or an asset's `kit` field
compactbooleanshortlisting rows instead of full detail. A 45-part kit at full detail is a large result; use this when you are surveying rather than building.
get_terrainAT WHAT HEIGHT DO I PLACE THIS, and where can I build. Every kit ships a procedural TERRAIN program for its own ground, and the ground is no longer flat, so a y of 0 is wrong almost everywhere. Pass `at` with the x/z you want to place at and you get the ground height there; set position.y to it. `f…

AT WHAT HEIGHT DO I PLACE THIS, and where can I build. Every kit ships a procedural TERRAIN program for its own ground, and the ground is no longer flat, so a y of 0 is wrong almost everywhere. Pass `at` with the x/z you want to place at and you get the ground height there; set position.y to it. `f…

ParameterTypeDescription
id*stringterrain asset id. Omit to list every kit that has one.
flatsintegerhow many level sites to return (default 12, max 40)
atstringx,z;x,z;… — AT WHAT HEIGHT DO I PLACE THIS. Returns the ground height and slope under each point; set the object's position.y to the y you get back and it rest…
scatterintegern placement points the terrain picks itself, already on the ground and already filtered to slopes gentle enough to stand on, each with a random yaw. For rocks,…
profilestringx0,z0,x1,z1[,steps] — the ground along a straight line, for a road, a wall or a bridge
spanintegerblock size in 64m chunks, 1 to 4. Bigger blocks have more room and more sites.
erosionnumber0 to 1. Weathers the landforms: valleys smooth out, crests stay sharp. Changes where the level sites are, so ask with the same value you intend to build with.
flattennumber0 to 1. Clears a level area in the MIDDLE of the block for a settlement, leaving the landscape around it. Raise it when the natural sites are too small for wha…
who_am_iWhat this connection can currently do: whether a key is attached, which assets and kits it owns, and therefore which downloads will work. Call it before promising the user a paid file, and when a download 404s, rather than guessing whether the problem is the key or the asset.

What this connection can currently do: whether a key is attached, which assets and kits it owns, and therefore which downloads will work. Call it before promising the user a paid file, and when a download 404s, rather than guessing whether the problem is the key or the asset.

No input schema was published for this tool.

buy_planBuy a Polyfork plan: Pro (monthly or yearly) or a one-payment lifetime seat. This tool NEVER charges anything itself. It returns a Stripe Checkout link and the exact amount; the payment happens on that page (cards and Link), and only with the user's approval of the amount. Call it with no arguments…

Buy a Polyfork plan: Pro (monthly or yearly) or a one-payment lifetime seat. This tool NEVER charges anything itself. It returns a Stripe Checkout link and the exact amount; the payment happens on that page (cards and Link), and only with the user's approval of the amount. Call it with no arguments…

ParameterTypeDescription
planstringwhat to buy; omit to list what is on sale, with prices
confirmstringthe checkout_id from an earlier call, WHOLE (starts with cs_, and may carry a second part after a dot): reports whether it has been paid and activates the plan…
get_helpHow to use this server: what the metadata means, the rules that are easy to get wrong (real-world metres, one material, never rescale to fake a fit), and worked recipes for building a scene. Call it when a tool did not behave as you expected, or before a multi-step build, instead of guessing.

How to use this server: what the metadata means, the rules that are easy to get wrong (real-world metres, one material, never rescale to fake a fit), and worked recipes for building a scene. Call it when a tool did not behave as you expected, or before a multi-step build, instead of guessing.

ParameterTypeDescription
topicstringomit for the overview
report_needReport a gap. Four kinds, and the last three are about THIS SERVER rather than the catalogue: kind=asset, we do not model what the user asked for (offer this whenever a search is empty or thin); kind=capability, you needed the server to do something it cannot; kind=output, a tool answered but not w…

Report a gap. Four kinds, and the last three are about THIS SERVER rather than the catalogue: kind=asset, we do not model what the user asked for (offer this whenever a search is empty or thin); kind=capability, you needed the server to do something it cannot; kind=output, a tool answered but not w…

ParameterTypeDescription
need*stringwhat was missing, in plain words (max 500 characters; put the detail in `context`, which takes 1000)
kindstringdefaults to asset
toolstringwhich tool this is about, for capability/output/docs
contextstringwhat the user was building, or what you expected instead
emailstringonly if the user offers it

12 of 12 tools published a description.

Tool names and descriptions are written by the publisher and shown verbatim as inert text. They are the strings an MCP client passes to a model, so Forge scans them for prompt-injection patterns — any finding appears with the security scan above. “Privileged” is a keyword match on the tool name, not an audit of what the tool does: a benign-sounding name can still do anything.

About

Low-poly 3D models and kits for three.js and game engines: search, match, remix, preview.

Keywords
mcp
Alternatives
Comparing tool surfaces…

No dependency coverage

This entry publishes no npm package, so Forge has no dependency tree for it. That is a gap in coverage — not a statement that it has no dependencies.