An agent's workbench
Find a piece, read its record, then stand it in a scene. These are our live HTTP bridge tools—not promises about a client integration.
Get an API key
- Sign in to make a key.
- Open API keys, name a key and create it. The full key (
msk_…) is shown once; copy it into your agent's config. - Send it on every call as
Authorization: Bearer msk_…(orx-api-key: msk_…).
- No key
- initialize, tools/list and get_help only, so agents can discover the server
- Free account
- 20 tool calls per UTC day, counted per account across all its keys. The 21st returns HTTP 429, JSON-RPC -32029
- Paid account
- Unlimited: an active Pro or Founders membership, or any paid purchase (a single, a kit or a pack)
- Headers
- X-RateLimit-Limit and X-RateLimit-Remaining on every keyed reply ('unlimited' when paid); X-RateLimit-Reset is the next UTC midnight
- Missing or bad key
- HTTP 401, JSON-RPC -32001
Connect over HTTP
BASE=https://meshsmiths-dusky.vercel.app
# Discovery needs no key
curl -fsS -X POST "$BASE/api/mcp" -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
# Everything else needs your key
curl -sS -X POST "$BASE/api/mcp" -H 'Content-Type: application/json' -H "Authorization: Bearer $MESHSMITHS_API_KEY" -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"who_am_i","arguments":{}}}'{
"mcpServers": {
"meshsmiths": {
"type": "http",
"url": "https://meshsmiths-dusky.vercel.app/api/mcp",
"headers": {
"Authorization": "Bearer msk_your_key_here"
}
}
}
}The eleven tools
Recorded from tools/list on the local preview. Tool inputs are documented here because the bridge returns names, not schemas.
| Tool | Arguments | Returns | Key |
|---|---|---|---|
search_pieces | q?, line?, kit?, free?, max_triangles? | Catalogue matches and coverage | API key |
get_piece | id | Dimensions, knobs, delivery and access | API key |
find_matching | id | Compatible catalogue pieces | API key |
get_variant | id, want | Suggested knob values | API key |
preview_scene | ids (array or comma-separated) | Compatibility summary, not a render or export | API key |
list_kits | none | Kit directory | API key |
get_kit | id | Members and assembly conventions | API key |
get_terrain | id | Terrain sample at the origin | API key |
who_am_i | none | Tier, plan, used_today, limit, owned_kits | API key |
get_help | none | API conventions | no key |
report_need | need, kind, context? | An in-memory need report; not a durable write | API key |
From a cold start to GLB bytes
This public Cairn is a transport example, not a Free-tier entitlement or a composed scene export.
BASE=http://localhost:3066
curl -fsS "$BASE/prompt.txt"
curl -fsS "$BASE/api/pieces?q=cairn"
curl -fsS "$BASE/api/pieces/prp_cairn"
curl -fsS -X POST "$BASE/api/mcp" -H 'Content-Type: application/json' -H "Authorization: Bearer $MESHSMITHS_API_KEY" -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"preview_scene","arguments":{"ids":["prp_cairn"]}}}'
curl -fS "$BASE/bank/props/prp_cairn/master.glb" -o cairn.glbFetch the actual Cairn GLB. Inspect its first four bytes: glTF. Keep its licence and access findings with your placement manifest.
Scene conventions
- Units
- Metres; Y-up; front +Z
- Origin
- Ground at y=0, centred in X/Z
- Knobs
- Use returned names and values; keep kit-wide knobs consistent
- Budget
- Free eligibility is under 600 triangles per piece, not per scene. Cairn has 613.
Access and gaps
Pro is $39/month; yearly is $390 (assumed at ten monthly payments). Founders is $150 for a lifetime seat. One art asset is $4.99; every kit pack is $29. Paid access does not release unfinished files.
Hotlink a piece
Use the catalogue ID directly; no download-token exchange for free pieces.
curl -fS "$BASE/cdn/workshop-lantern.json"
curl -fS "$BASE/cdn/workshop-lantern.glb" -o lantern.glb
# Browser module: import { load } from '/cdn/workshop-lantern.js'
# await load(); resolves to a three.js GLTF result
# Configure with ?p.tallness=1.2; use the returned knob schema.GET /cdn/<pieceId>.json returns metadata and knob defaults; .glb returns a binary model; .js exports a GLTFLoader wrapper, not a procedural factory. Use a three.js import map in the browser. Unknown knobs and invalid values return 400. Nondefault file-backed variants currently return a visible 503; default files and procedural variants are supported. Pro access uses the existing catalogue entitlement policy and returns 402 with plan information when access is missing.