Skip to content

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

  1. Sign in to make a key.
  2. Open API keys, name a key and create it. The full key (msk_…) is shown once; copy it into your agent's config.
  3. Send it on every call as Authorization: Bearer msk_… (or x-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

tools-list.sh
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":{}}}'
mcp.json
{
  "mcpServers": {
    "meshsmiths": {
      "type": "http",
      "url": "https://meshsmiths-dusky.vercel.app/api/mcp",
      "headers": {
        "Authorization": "Bearer msk_your_key_here"
      }
    }
  }
}

Read the agent brief · Discovery index · REST directory

The eleven tools

Recorded from tools/list on the local preview. Tool inputs are documented here because the bridge returns names, not schemas.

ToolArgumentsReturnsKey
search_piecesq?, line?, kit?, free?, max_triangles?Catalogue matches and coverageAPI key
get_pieceidDimensions, knobs, delivery and accessAPI key
find_matchingidCompatible catalogue piecesAPI key
get_variantid, wantSuggested knob valuesAPI key
preview_sceneids (array or comma-separated)Compatibility summary, not a render or exportAPI key
list_kitsnoneKit directoryAPI key
get_kitidMembers and assembly conventionsAPI key
get_terrainidTerrain sample at the originAPI key
who_am_inoneTier, plan, used_today, limit, owned_kitsAPI key
get_helpnoneAPI conventionsno key
report_needneed, kind, context?An in-memory need report; not a durable writeAPI 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.

cairn-walk.sh
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.glb

Fetch 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.

cdn.sh
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.