Teztopia · SDK
Build outside, walk it inside.
Building happens on mainland plots. Let your own AI agent rough out your plot, prompt it for the details, and deploy it with your wallet, or build one cell and import it into your plot editor. Or write the scene from a script. Everything runs on your computer with Node.js 20 or newer; nothing to install.
- third-life-mcp.mjsAn MCP server: Claude Code, Codex, Claude Desktop, Cursor, VS Code and other agents build through it.
- third-life-pack.mjsPacks a scene JSON and its GLB models into the ZIP the plot editor imports; makes your plot's folder and deploys it.
- world.schema.jsonThe scene format as a JSON Schema, for scripts in any language.
-
teztopia_optimize.pyA Blender script that takes a heavy scene to a GLB the town accepts. Then
optimize_modelfinishes it: optimizing assets. - README.mdThe full guide: setup for each agent, the tools, the format, limits and troubleshooting.
First scene in 2 minutes
-
Put the server in a folder of its own (Node.js 20 or newer):
mkdir teztopia && cd teztopia curl -O https://teztopia.xyz/sdk/third-life-mcp.mjs
On Windows PowerShell, write
curl.exe. -
Give it to Claude Code from that folder:
claude mcp add teztopia -- node "$PWD/third-life-mcp.mjs" --scene "$PWD/my-world.json"
-
Start
claudethere and ask: “Use the teztopia tools. Read describe_rules, then build a small walled garden with a fountain, benches, cypresses and a pergola. Use prefabs where they fit. After each round look at preview and describe_scene, then export_zip.” -
Open your plot in the town (My space), go to Share,
choose Import and pick
my-world.zip: the cell lands in your plot. Walk it, then keep prompting for the details.
Your plot, like a Decentraland scene
If you own a plot on the mainland, it is a folder on your computer: every 16 m cell of it, its street and its neighbours. Build it with any agent, look at it, then deploy it with your wallet.
Signed in with the wallet that owns the plot. It starts from your draft or your published plot. The plot editor has the same button, under Share.
-
Init. Unzip the template, or make it with the pack command:
node third-life-pack.mjs init --plot 5
-
Build with your agent in that folder. Its README has the line for Claude
Code (a folder made by
initalso has a.mcp.jsonit reads); Cursor and VS Code read their own setups there. Codex:codex mcp add teztopia -- node "$PWD/third-life-mcp.mjs" --scene "$PWD/scene.json"
Positions run across the whole plot. Walls and floors may cross cell borders, where they are cut into one piece per cell; everything else stays inside one cell, and the tools say where it fits. -
Preview.
previewdraws the plot with its numbered cells and the street entrance;describe_scenewalks it from the street. -
Deploy.
node third-life-pack.mjs deploy
Your browser opens the deploy page, which reads the plot from your computer (127.0.0.1 only, a random link for 15 minutes). Signed in with your wallet, you see what changes cell by cell and approve it in your wallet. No key ever leaves your wallet. - Visit your plot on the mainland, and deploy again whenever you change it.
Use it from ChatGPT or Claude
ChatGPT on the web and Claude cannot run a file on your computer, so the site itself is the server. Add this address as a connector:
https://teztopia.xyz/mcp
Your agent gets the same building tools, with the same checks, and builds a draft of your own plot kept for your wallet. You sign in once with your Tezos wallet and allow it. It can never publish: you open its draft in your plot editor, walk it, and publish it there with your wallet’s signature. It cannot sign, spend tez, upload files or see anything else of your account. You need an invited wallet with a claimed plot.
ChatGPT (web, a plan that allows custom MCP servers / developer mode):
- Open chatgpt.com/plugins, press +, choose Add custom MCP server. (Older menus: Settings › Apps & Connectors › Advanced settings › Developer mode, then Create.)
- Name
Teztopia; connection: the address above, ending in/mcp. - Authentication OAuth, client ID and secret empty. Accept the warning and create it.
- A Teztopia page opens: sign in with your wallet and press Allow.
-
In a new chat type
@, pick Teztopia and ask: “Use Teztopia. Read describe_rules, then build a small gallery on my plot with a courtyard and a fountain. After each round look at preview and describe_scene. When it is done, run validate and deploy.” ChatGPT asks you to confirm each change; that is its own safety step.
Claude (claude.ai, Desktop, mobile):
- Settings › Connectors › Add custom connector.
- Name
Teztopia, URL the address above, advanced fields empty. - Connect, sign in with your wallet on the Teztopia page, Allow.
- Turn Teztopia on in a chat’s tools menu and ask as above.
Claude Code:
claude mcp add --transport http teztopia https://teztopia.xyz/mcp,
then /mcp to sign in. Codex:
codex mcp add teztopia --url https://teztopia.xyz/mcp,
then codex mcp login teztopia. Agents that only take a header can use an
access token from your account › Connected agents.
From draft to published plot. When the agent calls deploy it
gives you a link to your plot editor, Share › AI agents. Open in the
editor puts its version in your editor as one step (Undo returns to yours);
Send my draft gives it your version, never over a newer one of its own. Then
publish from Share as always: your wallet signs, no tez is spent.
Disconnect an agent at any time in your account › Connected agents. Up to 4 drafts per wallet and 1,500 tool calls a day. Model files and NFTs are added by you in the plot editor.
Other agents
Use absolute paths. On Windows, write them with forward slashes in JSON
(C:/Users/you/teztopia/my-world.json).
Codex CLI (OpenAI), from your folder:
codex mcp add teztopia -- node "$PWD/third-life-mcp.mjs" --scene "$PWD/my-world.json"
Claude Desktop, in claude_desktop_config.json (Settings › Developer › Edit Config), then restart it:
{
"mcpServers": {
"teztopia": {
"command": "node",
"args": ["/Users/you/teztopia/third-life-mcp.mjs", "--scene", "/Users/you/teztopia/my-world.json"]
}
}
}
Cursor, in .cursor/mcp.json:
{
"mcpServers": {
"teztopia": {
"command": "node",
"args": ["${workspaceFolder}/third-life-mcp.mjs", "--scene", "${workspaceFolder}/my-world.json"]
}
}
}
VS Code, in .vscode/mcp.json:
{
"servers": {
"teztopia": {
"type": "stdio",
"command": "node",
"args": ["${workspaceFolder}/third-life-mcp.mjs", "--scene", "${workspaceFolder}/my-world.json"]
}
}
}
What your agent can do
Rough out with rooms, walls, floors and stairs a visitor can climb, or with the old-town
prefabs; hang empty frames for your NFTs; refine object by object. After each round it
can look: preview returns plans and elevations as an image, and
describe_scene walks the scene with the game’s own movement and says which
floors a visitor cannot reach. The same tools are on the site's remote MCP server, for
ChatGPT or Claude working on your plot's drafts.
Import it
- Open your plot in the town and press My space.
- Go to Share and choose Import.
- Pick the ZIP: the cell lands in your plot. Walk it, then keep prompting your agent for the details.
A scene is one 16 × 16 m cell, in metres, y up; a plot is several, built and deployed whole as above. If the tools do not show up, the README has a troubleshooting section.