Gaitkit Open the lab
For agents

Your agent
speaks knob

Point Claude Code, Cursor, Codex or any MCP client at Gaitkit and it can search 518 specimens, turn a sentence into knob values and drop the result into your scene. No key, no account to browse.

Endpoint https://gaitkit.com/mcpTransport Streamable HTTPTools 4

01Install

One line or one file, depending on your client. Restart the session afterwards so the agent sees the tools.

Terminal
claude mcp add --transport http gaitkit https://gaitkit.com/mcp

Add --scope user to have it in every project. Check with claude mcp list; inside a session, /mcp shows the four tools.

02The four tools

search_assetsread-only

Finds specimens and grades its own answer: ok, poor or none. On poor or none it says so instead of passing off the nearest thing, and suggests report_need.

query: string · class: creature | mech | vehicle | building | nature | prop | character · legs: integer · max_triangles: integer · limit: integer
get_assetread-only

Size in metres, palette, knob schema with every knob's description, presets, night-light zones, rigged parts, gait data for walkers, file URLs (module, GLB, OBJ) and paste-ready three.js code for its kind of motion.

id: string, required
get_variantread-only

Plain words in, a createAsset({...}) call out: colours, sizes, counts, features, option and preset names, in English or Turkish. Reports a confidence and lists the words it could not place, so the agent can be honest about them.

id: string, required · want: string, required
report_needwrites to the request queue

Logs a specimen the catalogue does not have. Asking twice keeps the first place in the queue. The queue decides what the factory builds next.

need: string, required · context: string

03What a session looks like

A real exchange, shortened. The tool answers are what the server returns today; note how the unmatched word comes back instead of being guessed.

Claude Code
› Put a white robot spider with long legs on the lab floor, no turret. Make it glittery.

● gaitkit · search_assets({ "query": "robot spider", "legs": 8 })
  coverage: ok · spider-bot (mech, 8 legs, 1452 tris, 0.85 × 0.38 × 0.74 m), spider-tank, …

● gaitkit · get_variant({ "id": "spider-bot", "want": "white with long legs, no turret, glittery" })
  confidence: high
  call: createAsset({"colorway":"ivory","legLength":1.25,"turret":false})
  unknown_words: ["glittery"]

● Write(src/lab/spider.js)
  import { createAsset } from 'https://gaitkit.com/cdn/spider-bot.mjs';
  import { walker } from 'https://gaitkit.com/runtime/walk.mjs';
  const spider = createAsset({ colorway: 'ivory', legLength: 1.25, turret: false });
  const gait = walker(spider, { ground });   // feet stay planted on your floor mesh

  Done: an ivory spider bot with long legs and no turret, walking on the floor mesh.
  It has no glitter option. Want me to log that as a request?

04Things to ask

  • Find a walking creature under 2,000 triangles and make it patrol between these two points.
  • Build a small village: three cottages with porches, a well and some pine trees, all on the same scale.
  • I need a pickup truck in dark green. Wheels must roll with the distance it drives.
  • Give me a night version of the street lamp and light the zones it lists.
  • Is there a desert scorpion? If not, tell me and request one.
  • Port this spider's leg IK to Godot using the gait data from get_asset.

The matcher reads every knob's description, so words like rusty, arctic, twin guns or bacasız work when a specimen has a knob for them, and come back as unknown_words when it does not.

05Conventions agents can rely on

  • Y-up, metres, real-world scale. Every specimen rests on y = 0, centred on x and z, front facing +Z.
  • createAsset() with no arguments always builds the same published look; every knob is optional.
  • One vertex-coloured, flat-shaded material per specimen, at most 6,000 triangles.
  • Walking legs are named leg_i > hip_i > knee_i > foot_i; moving parts are named pivots listed in userData.rig.
  • Motion follows distance, not time, so feet do not slide and wheels do not skid at any frame rate.

The full contract is in the docs.

06REST and plain files

Everything the tools do is also a plain HTTP call, for scripts and agents without MCP.

MethodPathWhat
GET/api/assets?q=&class=&legs=&max_triangles=Search, same as search_assets
GET/api/assets/{id}Full metadata, same as get_asset
GET/api/assets/{id}/variant?want=Words to knob values, same as get_variant
POST/api/demand {need, context}Request a missing specimen, same as report_need
GET/catalog.jsonThe whole catalogue in one file
GET/cdn/{id}.mjs · .glb · .obj · -params.jsonModule, exports and knob schema
GET/llms.txtA short map of the site for language models

07Keys and limits

  • Browsing is open. Search, metadata, variants and free downloads need no key.
  • Paid files (the Pro part of the catalogue, baked knob combinations) will need an API key from your account, sent as Authorization: Bearer …. The tools tell the agent when a key is needed and where to get one.
  • Fair use. There will be a per-IP rate limit on anonymous calls at launch; agents that page through the catalogue should use /catalog.json instead of hundreds of searches.
  • See the pricing and the licence: specimens your agent fetches are licensed to you, as if you had downloaded them.