Polyshire BrowseKits
For AI agents

Let your AI agent build with it

This store is made to be used by coding agents, not just people. Every asset carries machine-readable data: real-world size in meters, the exact hex palette, rigged part names, triangle counts and preview renders the agent can look at. One pasted prompt teaches your agent to browse all of it and wire models into your scene by itself.

Browse the catalog

Three steps

1

Paste the prompt into your agent

Claude Code, Cursor, Codex, or anything that can fetch URLs. The prompt below teaches it the whole catalog: the JSON API, the download URLs, and what the metadata means.

2

Optional: hand it an API key

Free assets work instantly, with no account. To let the agent download paid assets you own, create a key and put it in its environment as THREEJS_ASSETS_KEY. The prompt already tells it how to use it.

3

Ask for what you want

Say "build a cozy medieval square" and the agent browses the catalog, compares hero renders, palettes and real-world sizes, then imports and composes the right models on its own.

The prompt

agent-prompt.txt
You now know how to use polyshire.com, a low-poly 3D asset store built
to be browsed and used by AI agents.

CATALOG (public JSON, no auth)
  GET https://polyshire.com/api/assets
      filters: q (search), class (prop|building|vehicle|character|ultra),
      free (0|1), kit, sort (latest|tris), page, per_page (max 100)
  GET https://polyshire.com/api/assets/{id}
      full metadata: triangles, size_m (real-world meters), palette (hex colors),
      style, origin, rigged_parts, detachable_parts, render PNGs, download URLs
  GET https://polyshire.com/api/kits  and  /api/kits/{id}
      themed sets whose parts share one palette and one scale
  Docs: https://polyshire.com/llms.txt

USING AN ASSET (free assets need no auth)
  Hotlink or download:
    ES module  https://polyshire.com/cdn/{id}.mjs
               import { createAsset } from '...'; scene.add(createAsset())
    GLB        https://polyshire.com/cdn/{id}.glb  (three.js, Unity, Godot, Blender)

MY API KEY (only for paid assets I already own)
  Browsing, all metadata and every free asset are public: no key needed.
  For a paid download, read the key from the THREEJS_ASSETS_KEY environment
  variable and send it as a header:
    Authorization: Bearer $THREEJS_ASSETS_KEY
    GET https://polyshire.com/dl/{id}.glb            a paid asset, GLB
    GET https://polyshire.com/dl/{id}.mjs            a paid asset, ES module
    GET https://polyshire.com/dl/kit-{kit-id}.zip    a whole kit I own, one file
  Keep the key in the environment: never print it back to me and never write it
  into source files. If the variable is missing, ask me for one instead of
  guessing; keys are created at https://polyshire.com/account.

READING THE METADATA
  size_m is real-world meters and origin is at ground level: models sit on y=0.
  Every asset is flat-shaded vertex colors on ONE material: one draw call each,
  no textures to wire up.
  palette lists the exact hex colors, so you can pick assets that look coherent.
  rigged_parts maps each animatable part to {type, axis, range}: the pivot is
  already at the hinge or axle, rotate ranges are degrees, slide ranges are
  meters. Animate with:
    asset.getObjectByName(part).rotation[axis] = THREE.MathUtils.degToRad(deg)
    asset.getObjectByName(part).position[axis] = meters   // type: slide
  detachable_parts can be hidden/removed and the surface behind stays closed.
  Characters use a standard humanoid skeleton (Mixamo-named bones), so stock
  clips retarget; sample clips: https://polyshire.com/anim/clips.json
  renders are PNG images you can open to SEE an asset before choosing it.

BUILDING GOOD SCENES
  Prefer parts of one kit, or assets with overlapping palettes.
  Static picks can merge into ONE draw call (all assets share one material):
    import { mergeAssets } from 'https://polyshire.com/cdn/merge.mjs';
    const { merged, dynamic } = mergeAssets([obj1, obj2, {object: obj3, rig}]);
    scene.add(merged); dynamic.forEach(d => scene.add(d));
  Position assets before merging; rig parts return in `dynamic`, still animatable.
  Many copies of one model: use THREE.InstancedMesh instead.
  Never rescale to fake a fit: sizes are real, pick right-sized assets instead.
  Ground and road tiles snap on the kit grid; use them for terrain.
  Check the hero render before importing, and read triangles to stay in budget.

When I ask for a scene: browse the catalog first, shortlist by hero renders and
palette, then import and compose.
61 lines · 3.4 KB plain text, no SDK, no MCP server

Paste it once per project; the agent keeps the knowledge for the whole session. Claude Code · Cursor · Codex · anything that can fetch a URL

What your agent can see

Real dimensions

Size in meters, origin on the ground, so scenes assemble without guesswork.

Exact palettes

The hex colors of every asset, for coherent scenes across picks.

Preview renders

Hero and turnaround PNGs the agent can actually look at before choosing.

Rig and hinge data

Every animatable part with its type, axis and range, pivots already at the hinge or axle. Characters carry a standard humanoid skeleton that stock animations retarget onto.

Performance stats

Triangle counts and draw calls, plus a CDN merge helper that collapses whole static scenes into a single draw call.

License clarity

Commercial use, no attribution, stated on every payload.

Everything here is readable by machines

The same data lives at /llms.txt and /api, and every asset page carries an AI agent tab with a prompt for that one model.

Polyshire

Sign in

One account for your purchases and downloads.

Continue with Google
or

No password needed: the link signs you in directly.